Merge branch 'dev' into uat-temp-pzj-250123-Assembly-Report

dev
pzj 3 months ago
commit 400ae3500c

@ -12,4 +12,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
public interface IMesEquipmentProdParamCfgService extends IBaseMesService<MesEquipmentProdParamCfg>{
}

@ -0,0 +1,7 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingPartType;
public interface IMesPackingPartTypeService extends IBaseMesService<MesPackingPartType> {
}

@ -5,6 +5,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -22,6 +23,23 @@ public interface IMesShippingOrderManagementDetailService extends IBaseMesServic
@ApiOperation("查询发运单明细")
ListPager<MesShippingOrderManagementDetailModel> queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager);
@ApiOperation("查询发运单明细")
ListPager<MesShippingOrderManagementDetailModel> queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager);
@ApiOperation("根据客户零件匹配零件号")
public ResultBean supplyBycustPartNo(Long[] ids);
@ApiOperation("根据CBR匹配零件号")
public ResultBean supplyByCBR(Long[] ids);
@ApiOperation("手动发运改数量")
public ResultBean updateQty(Long[] ids);
@ApiOperation("同步")
public ResultBean syncShip(Long[] ids);
@ApiOperation("发运退回")
void doShippingBack(Long[] idList,String organizeCode,String userName);

@ -1,7 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import io.swagger.annotations.ApiOperation;
@ -18,7 +20,11 @@ public interface IMesWorkOrderCutService extends IBaseMesService<MesWorkOrderCut
@ApiOperation("生成裁片工单")
void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber);
String userName, Integer editionNumber, boolean isFree, List<MesCutSchemeFg> mesCutSchemeFgs);
@ApiOperation("生成裁片工单")
void generateCutWorkOrderMaterial(WorkOrderMaterialCutModel workOrderMaterialCutModel);
@ApiOperation("分页查询裁片工单明细")
ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);

@ -82,6 +82,7 @@ public class MesBomController extends BaseMesController<MesBom> {
ValidatorBean.checkNotNull(bom.getBomCode(), "BOM代码不能为空");
ValidatorBean.checkNotNull(bom.getEffStartTime(), "生效时间不能为空");
bom.setOrganizeCode(AuthUtil.getOrganizeCode());
//bom.setOrganizeCode("C901");
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setListPager(bomService.queryMesDataTree(bom, pager));
} catch (ImppBusiException busExcep) {

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingPartType;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("成品包装类型零件信息")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPackingPartType")
public class MesPackingPartTypeController extends BaseMesController<MesPackingPartType>{
}

@ -55,6 +55,65 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle
}
}
@ApiOperation(value = "发运单异常明细", notes = "发运单异常明细")
@GetMapping("/master/error/query")
public ResultBean queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) {
try {
return ResultBean.success("查询成功").setListPager(shippingOrderManagementDetailService.queryMesShippingErrorDetailsByPager(mesShippingOrderManagementDetailModel,pager));
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "根据客户零件匹配零件号", notes = "根据客户零件匹配零件号")
@GetMapping("/master/part/supplyBycustPartNo")
public ResultBean supplyBycustPartNo(Long[] ids) {
try {
return shippingOrderManagementDetailService.supplyBycustPartNo(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "根据CBR匹配零件号", notes = "根据CBR匹配零件号")
@GetMapping("/master/part/supplyByCBR")
public ResultBean supplyByCBR(Long[] ids) {
try {
return shippingOrderManagementDetailService.supplyByCBR(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "修改数量", notes = "修改数量")
@GetMapping("/master/part/updateQty")
public ResultBean updateQty(Long[] ids) {
try {
return shippingOrderManagementDetailService.updateQty(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "发运同步", notes = "发运同步")
@GetMapping("/master/part/syncShip")
public ResultBean syncShip(Long[] ids) {
try {
return shippingOrderManagementDetailService.syncShip(ids);
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@ApiOperation(value = "发运退回", notes = "发运退回")
@PutMapping("/doShippingBack")
public ResultBean doShippingBack(@RequestBody Long[] idList) {

@ -2,8 +2,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderCutModel;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -14,12 +17,11 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
*
*/
@ -40,7 +42,44 @@ public class MesWorkOrderCutController extends BaseMesController<MesWorkOrderCut
ValidatorBean.checkNotNull(cutCode, "裁片方案不存在");
workOrderCutService.doGenerateCutWorkOrder(Arrays.asList(workOrderIds), cutCode, remark,
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), editionNumber);
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), editionNumber, false, null);
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/order/generate")
@ApiOperation(value = "裁片工单生成", notes = "裁片工单生成")
public ResultBean generateCutWorkOrder(@RequestBody WorkOrderCutModel workOrderCutModel) {
try {
ValidatorBean.checkNotNull(workOrderCutModel.getWorkOrderIds(), "工单不存在");
ValidatorBean.checkNotNull(workOrderCutModel.getCutCode(), "裁片方案不存在");
workOrderCutService.doGenerateCutWorkOrder(Arrays.asList(workOrderCutModel.getWorkOrderIds()), workOrderCutModel.getCutCode(), workOrderCutModel.getRemark(),
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), workOrderCutModel.getEditionNumber(), true, workOrderCutModel.getMesCutSchemeFgs());
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/material/generate")
@ApiOperation(value = "原材料生成", notes = "原材料生成")
public ResultBean generateCutWorkOrderMaterial(@RequestBody WorkOrderMaterialCutModel workOrderMaterialCutModel) {
try {
ValidatorBean.checkNotNull(workOrderMaterialCutModel.getCutWorkOrderNo(), "裁片工单号不能为空");
ValidatorBean.checkNotNull(workOrderMaterialCutModel.getMesCutSchemeMaterialList(), "裁片方案原材料不能为空");
workOrderCutService.generateCutWorkOrderMaterial(workOrderMaterialCutModel);
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {

@ -132,7 +132,11 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("organizeCode", mesShippingOrderManagementDetailModel.getOrganizeCode());
query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
if (mesShippingOrderManagementDetailModel.getStatus() == null) {
query.setParameter("status", MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
} else {
query.setParameter("status", mesShippingOrderManagementDetailModel.getStatus());
}
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingType()))
query.setParameter("shippingType", mesShippingOrderManagementDetailModel.getShippingType());
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getStartScanTimeStart()))
@ -147,6 +151,7 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde
query.setParameter("publishTimeStart", mesShippingOrderManagementDetailModel.getPublishTimeStart());
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeEnd()))
query.setParameter("publishTimeEnd", mesShippingOrderManagementDetailModel.getPublishTimeEnd());
}
private String getOrderBy(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel) {
@ -166,6 +171,8 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde
commonHql.append(" and d.status = :status ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingCode()))
commonHql.append(" and m.shippingCode like '%").append(mesShippingOrderManagementDetailModel.getShippingCode()).append("%' ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getShippingGroupCode()))
commonHql.append(" and m.shippingGroupCode like '%").append(mesShippingOrderManagementDetailModel.getShippingGroupCode()).append("%' ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getBarcode()))
commonHql.append(" and d.barcode like '%").append(mesShippingOrderManagementDetailModel.getBarcode()).append("%' ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPartNo()))
@ -188,6 +195,8 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde
commonHql.append(" and m.publishTime >= :publishTimeStart ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getPublishTimeEnd()))
commonHql.append(" and m.publishTime <= :publishTimeEnd ");
if (!StringUtils.isEmpty(mesShippingOrderManagementDetailModel.getDetailsStatus()))
commonHql.append(" and d.status = " + mesShippingOrderManagementDetailModel.getDetailsStatus() + "");
return commonHql.toString();
}
@Override

@ -5,19 +5,69 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.repository.MesCustPartInvoicedRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class MesCustomerCarModelDetailService extends BaseMesService<MesCustomerCarModelDetail> implements IMesCustomerCarModelDetailService {
@Autowired
private MesCustPartInvoicedRepository mesCustPartInvoicedRao;
@Autowired
private MesCustomerPartRepository customerPartRao;
@Autowired
private MesCustomerCarModelRepository customerCarModelRao;
private boolean check(String organizeCode,String custPartNo,String carModelCode){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(carModelCode,"carModelCode", ddlPackBean);
List<MesCustomerCarModel> carModelList = customerCarModelRao.findByHqlTopWhere(ddlPackBean, 1);
if (carModelList == null || carModelList.isEmpty()) {
return false;
}
String custCode = carModelList.get(0).getCustCode();
DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",ddlPackBean1);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",ddlPackBean1);
int count = mesCustPartInvoicedRao.findByHqlWhereCount(ddlPackBean1);
if (count > 0) {
return true;
}else {
DdlPackBean custPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",custPackBean);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",custPackBean);
int count1 = customerPartRao.findByHqlWhereCount(custPackBean);
return count1 > 0;
}
}
protected void setPackQueryBean(MesCustomerCarModelDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getCarModelCode(),"carModelCode",packBean);
}
protected void onInsertBean(MesCustomerCarModelDetail item) {
boolean check = check(AuthUtil.getOrganizeCode(), item.getCustPartNo(), item.getCarModelCode());
if (!check) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("待开票表及客户零件表不存在客户零件号【%s】请检查数据",
item.getCustPartNo())
.build();
}
// 数据校验
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());

@ -0,0 +1,21 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPackingPartTypeService;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingPartType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPackingPartTypeService extends BaseMesService<MesPackingPartType> implements IMesPackingPartTypeService {
@Override
protected void setPackQueryBean(MesPackingPartType bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartName(), MesExtConstWords.PART_NAME, packBean);
}
}

@ -9,9 +9,13 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProduceType;
import cn.estsh.i3plus.pojo.mes.repository.MesCustPartInvoicedRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -20,7 +24,14 @@ import java.util.List;
@Slf4j
public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGroupDetail> implements IMesPartProdGroupDetailService {
@Autowired
private MesPartProdGroupRepository partProdGroupRao;
@Autowired
private MesCustPartInvoicedRepository mesCustPartInvoicedRao;
@Autowired
private MesCustomerPartRepository customerPartRao;
protected void setPackQueryBean(MesPartProdGroupDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPartProdGroupCode(), "partProdGroupCode", packBean);
@ -40,6 +51,16 @@ public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGro
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getCustPartNo(), "客户零件号不能为空");
boolean check = check(item.getOrganizeCode(), item.getCustPartNo(), item.getPartProdGroupCode());
if (!check){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("待开票表及客户零件表不存在客户零件号【%s】请检查数据",
item.getCustPartNo())
.build();
}
DdlPackBean custBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", custBean);
DdlPreparedPack.getStringEqualPack(item.getCustPartNo(), "custPartNo", custBean);
@ -53,6 +74,29 @@ public class MesPartProdGroupDetailService extends BaseMesService<MesPartProdGro
}
}
private boolean check(String organizeCode,String custPartNo,String partProdGroupCode){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partProdGroupCode,"partProdGroupCode", ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = partProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
if (mesPartProdGroupList == null || mesPartProdGroupList.isEmpty()) {
return false;
}
String custCode = mesPartProdGroupList.get(0).getCustCode();
DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",ddlPackBean1);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",ddlPackBean1);
int count = mesCustPartInvoicedRao.findByHqlWhereCount(ddlPackBean1);
if (count > 0) {
return true;
}else {
DdlPackBean custPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",custPackBean);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",custPackBean);
int count1 = customerPartRao.findByHqlWhereCount(custPackBean);
return count1 > 0;
}
}
@Override
public void validateImport(List<MesPartProdGroupDetail> beanList) {

@ -5,10 +5,17 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesCustPartInvoicedRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -16,6 +23,50 @@ import java.util.List;
@Service
@Slf4j
public class MesPartShippingGroupDetailService extends BaseMesService<MesPartShippingGroupDetail> implements IMesPartShippingGroupDetailService {
@Autowired
private MesCustPartInvoicedRepository mesCustPartInvoicedRao;
@Autowired
private MesCustomerPartRepository customerPartRao;
@Autowired
private MesPartShippingGroupRepository shippingGroupRao;
private boolean check(String organizeCode,String custPartNo,String shippingGroupCode){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(shippingGroupCode,"partProdGroupCode", ddlPackBean);
List<MesPartShippingGroup> shippingGroupList = shippingGroupRao.findByHqlTopWhere(ddlPackBean, 1);
if (shippingGroupList == null || shippingGroupList.isEmpty()) {
return false;
}
String custCode = shippingGroupList.get(0).getCustCode();
DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",ddlPackBean1);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",ddlPackBean1);
int count = mesCustPartInvoicedRao.findByHqlWhereCount(ddlPackBean1);
if (count > 0) {
return true;
}else {
DdlPackBean custPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",custPackBean);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",custPackBean);
int count1 = customerPartRao.findByHqlWhereCount(custPackBean);
return count1 > 0;
}
}
@Override
protected void onInsertBean(MesPartShippingGroupDetail item) {
boolean check = check(AuthUtil.getOrganizeCode(), item.getCustPartNo(), item.getShippingGroupCode());
if (!check) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("待开票表及客户零件表不存在客户零件号【%s】请检查数据",
item.getCustPartNo())
.build();
}
}
protected void setPackQueryBean(MesPartShippingGroupDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);

@ -10,11 +10,14 @@ import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheck;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckPart;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTransfer;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTransferDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesCustPartInvoicedRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartTransferDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartTransferRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.python.antlr.ast.Str;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -25,8 +28,32 @@ import java.util.List;
public class MesPartTransferDetailService extends BaseMesService<MesPartTransferDetail> implements IMesPartTransferDetailService {
@Autowired
private MesCustPartInvoicedRepository mesCustPartInvoicedRao;
@Autowired
private MesCustomerPartRepository customerPartRao;
@Autowired
private MesPartTransferRepository partTransferRepository;
private boolean check(String custCode, String custPartNo, String organizeCode) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",ddlPackBean);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",ddlPackBean);
int count = mesCustPartInvoicedRao.findByHqlWhereCount(ddlPackBean);
if (count > 0) {
return true;
}else {
DdlPackBean custPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(custCode,"custCode",custPackBean);
DdlPreparedPack.getStringEqualPack(custPartNo,"custPartNo",custPackBean);
int count1 = customerPartRao.findByHqlWhereCount(custPackBean);
return count1 > 0;
}
}
protected void setPackQueryBean(MesPartTransferDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getPid(),"pid",packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(),"custCode",packBean);
@ -46,7 +73,15 @@ public class MesPartTransferDetailService extends BaseMesService<MesPartTransfer
// ValidatorBean.checkNotNull(item.getCustCode(), "custCode不能为空" );+
// ValidatorBean.checkNotNull(item.getMessageNo(), "messageNo不能为空");
// ValidatorBean.checkNotNull(item.getCustOrganizeCode(), "custOrganizeCode不能为空" );
boolean result = check(item.getCustCode(), item.getCustPartNo(), item.getOrganizeCode());
if (!result) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("待开票表及客户零件表不存在客户代码【%s】 的客户零件号【%s】请检查数据",
item.getCustPartNo(),item.getPartNo())
.build();
}
//唯一性校验
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(),"partNo",packBean);

@ -5,19 +5,20 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesErpWorkCenter;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTransfer;
import cn.estsh.i3plus.pojo.mes.bean.MesProdShiftRecord;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesCustPartInvoicedRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPartTransferService extends BaseMesService<MesPartTransfer> implements IMesPartTransferService {
@Override
protected void setPackQueryBean(MesPartTransfer bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getCustCode(), "custCode", packBean);
@ -48,6 +49,8 @@ public class MesPartTransferService extends BaseMesService<MesPartTransfer> impl
.build();
}
}
@Override
protected void onUpdateBean(MesPartTransfer item) {
// 数据校验

@ -25,6 +25,10 @@ public class MesProdRuleSortCfgService extends BaseMesService<MesProdRuleSortCfg
DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), MesExtConstWords.CRAFT_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getAssemblyPartNo(), MesExtConstWords.ASSEMBLY_PART_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getAssemblyPartName(), MesExtConstWords.ASSEMBLY_PART_NAME, packBean);
DdlPreparedPack.getStringLikerPack(bean.getAssemblyPartNo(), MesExtConstWords.ASSEMBLY_PART_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getVehicleNo(), MesExtConstWords.VEHICLE_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getVehicleClassNo(), MesExtConstWords.VEHICLE_CLASS_NO, packBean);
}
@Override

@ -6,29 +6,29 @@ import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesShippingOrderManagementDetailD
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.ResultBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@ -42,10 +42,27 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
private MesShippingOrderManagementDetailRepository shippingOrderDetailRepository;
@Autowired
private MesShippingOrderManagementRepository shippingOrderRepository;
@Autowired
private IMesProduceSnService mesProduceSnService;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private MesCustomerPartRepository mesCustomerPartRepository;
@Autowired
private IMesMoveRuleRepository mesMoveRuleRepository;
@Autowired
private MesCimGmCbrRuleRepository mesCimGmCbrRuleRepository;
@Autowired
private MesWorkOrderPartRepository mesWorkOrderPartRepository;
@Autowired
private MesJisShippingRepository jisShippingRepository;
protected void setPackQueryBean(MesShippingOrderManagementDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getPid(), "pid", packBean);
@ -71,6 +88,174 @@ public class MesShippingOrderManagementDetailService extends BaseMesService<MesS
}
@Override
public ListPager<MesShippingOrderManagementDetailModel> queryMesShippingErrorDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager) {
mesShippingOrderManagementDetailModel.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue());
return shippingOrderManagementDetailDao.queryMesShippingDetailsByPager(mesShippingOrderManagementDetailModel, pager);
}
@Override
public ResultBean supplyBycustPartNo(Long[] ids) {
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
/*String organizeCode = "CR01";
String userName ="zxw";*/
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getCustPartNo(), "custPartNo", ddlPackBean);
MesCustomerPart mesCustomerPart = mesCustomerPartRepository.getByProperty(ddlPackBean);
if (mesCustomerPart == null) {
log.info("客户零件号不存在:{}", mesShippingOrderManagementDetail.getCustPartNo());
return ResultBean.fail(String.format("客户零件号不存在:%s", mesShippingOrderManagementDetail.getCustPartNo()));
}
mesShippingOrderManagementDetail.setPartNo(mesCustomerPart.getErpPartNo());
mesShippingOrderManagementDetail.setPartName(mesCustomerPart.getErpPartName());
}
shippingOrderDetailRepository.saveAll(detailList);
return ResultBean.success().setResultList(detailList);
}
@Override
public ResultBean supplyByCBR(Long[] ids) {
/*String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();*/
String organizeCode = "CR01";
String userName ="zxw";
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getCustPartNo(), "custPartNo", ddlPackBean);
MesCimGmCbrRule mesCimGmCbrRule = mesCimGmCbrRuleRepository.getByProperty(ddlPackBean);
if (mesCimGmCbrRule == null) {
log.info("CBR规则未配置客户零件号:{}", mesShippingOrderManagementDetail.getCustPartNo());
return ResultBean.fail(String.format("CBR规则未配置:客户零件号:%s", mesShippingOrderManagementDetail.getCustPartNo()));
}
mesShippingOrderManagementDetail.setPartNo(mesCimGmCbrRule.getErpPartNo());
mesShippingOrderManagementDetail.setPartName(mesCimGmCbrRule.getErpPartName());
}
shippingOrderDetailRepository.saveAll(detailList);
return ResultBean.success().setResultList(detailList);
}
@Override
public ResultBean updateQty(Long[] ids) {
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
/*String organizeCode = "CR01";
String userName ="zxw";*/
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
if (StringUtils.isEmpty(mesShippingOrderManagementDetail.getPartNo())) {
log.info("发运单明细对应零件号为空");
return ResultBean.fail(String.format("发运单明细对应零件号为空"));
}
mesShippingOrderManagementDetail.setActualQty((int)mesShippingOrderManagementDetail.getPlanQty());
ConvertBean.serviceModelUpdate(mesShippingOrderManagementDetail, userName); }
if (!CollectionUtils.isEmpty(detailList)) {
shippingOrderDetailRepository.saveAll(detailList);
}
return ResultBean.success("操作成功");
}
@Override
public ResultBean syncShip(Long[] ids) {
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
/*String organizeCode = "CR01";
String userName ="zxw";*/
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(ids, organizeCode, userName);
List<Long> idList = detailList.stream().map(MesShippingOrderManagementDetail::getPid).distinct().collect(Collectors.toList());
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(idList, "id", orderPackBean);
List<MesShippingOrderManagement> shippingOrderManagements = shippingOrderRepository.findByHqlWhere(orderPackBean);
Map<Long, MesShippingOrderManagement> orderMap = shippingOrderManagements.stream().collect(Collectors.toMap(MesShippingOrderManagement::getId, Function.identity()));
List<MesJisShipping> mesJisShippings = new ArrayList<>();
for (MesShippingOrderManagementDetail mesShippingOrderManagementDetail : detailList) {
MesShippingOrderManagement mesShippingOrderManagement = orderMap.get(mesShippingOrderManagementDetail.getPid());
if (StringUtils.isEmpty(mesShippingOrderManagementDetail.getPartNo())) {
log.info("发运单明细对应零件号为空");
return ResultBean.fail(String.format("发运单明细对应零件号为空"));
}
if ((int) mesShippingOrderManagementDetail.getPlanQty() != mesShippingOrderManagementDetail.getActualQty()) {
log.info("计划数量和实际数量不相等");
return ResultBean.fail(String.format("计划数量和实际数量不相等"));
}
mesShippingOrderManagementDetail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
mesShippingOrderManagementDetail.setRemark("手工发运");
ConvertBean.serviceModelUpdate(mesShippingOrderManagementDetail, userName);
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue(), "groupType", ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagement.getShippingGroupCode(), "code", ddlPackBean);
MesMoveRule moveRule = mesMoveRuleRepository.getByProperty(ddlPackBean);
if (moveRule == null) {
log.info("移库规则不存在:发运组代码:{}", mesShippingOrderManagement.getShippingGroupCode());
return ResultBean.fail(String.format("移库规则不存在:发运单编号:%s,发运组代码:%s,", mesShippingOrderManagement.getShippingCode(),mesShippingOrderManagement.getShippingGroupCode()));
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesShippingOrderManagementDetail.getVisualOrderNo(), "workOrderNo", packBean);
MesWorkOrderPart workOrderPart = mesWorkOrderPartRepository.getByProperty(packBean);
if (workOrderPart == null) {
log.info("工单零件信息不存在:工单号:{}", mesShippingOrderManagementDetail.getVisualOrderNo());
return ResultBean.fail(String.format("工单零件信息不存在:工单号:%s", mesShippingOrderManagementDetail.getVisualOrderNo()));
}
mesJisShippings.add(getMesJisShipping(mesShippingOrderManagement, mesShippingOrderManagementDetail,moveRule.getErpSrcLocateNo(), workOrderPart,userName));
}
if (!CollectionUtils.isEmpty(detailList)) {
shippingOrderDetailRepository.saveAll(detailList);
}
// jis同步
if(!CollectionUtils.isEmpty(mesJisShippings)){
jisShippingRepository.saveAll(mesJisShippings);
}
return ResultBean.success("操作成功");
}
public MesJisShipping getMesJisShipping(MesShippingOrderManagement orderManagement,MesShippingOrderManagementDetail detail, String srcLocateNo, MesWorkOrderPart orderPart, String userName) {
MesJisShipping jisShipping = new MesJisShipping();
BeanUtils.copyProperties(orderManagement, jisShipping);
BeanUtils.copyProperties(detail, jisShipping);
jisShipping.setFactoryCode(orderManagement.getCustOrganizeCode());
jisShipping.setShippingTime(TimeTool.getNowTime(true));
jisShipping.setErpWarerhouse(srcLocateNo);
jisShipping.setErpWarehous(srcLocateNo);
jisShipping.setDock(orderManagement.getSendDockCode());
jisShipping.setCusCode(orderManagement.getCustCode());
jisShipping.setCusDock(orderManagement.getCustDockCode());
jisShipping.setCustOrderNo(detail.getCustOrderNo());
// 子零件信息赋值
jisShipping.setPartNo(orderPart.getPartNo());
jisShipping.setUnit(orderPart.getItemUnit());
// 20241115 没有给carNo赋值
jisShipping.setCarNo(detail.getVin());
jisShipping.setSerialNumber(orderPart.getWorkOrderNo());
jisShipping.setQuantityPerCar(orderPart.getItemQty());
jisShipping.setOffTime(TimeTool.getNowTime(true));
jisShipping.setShippingOrderCode(orderManagement.getShippingCode());
jisShipping.setFid(UUID.randomUUID().toString());
jisShipping.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelInitialize(jisShipping, userName);
return jisShipping;
}
@Override
public void doShippingBack(Long[] idList, String organizeCode, String userName) {
List<MesShippingOrderManagementDetail> detailList = getManagementDetails(idList, organizeCode, userName);
if (CollectionUtils.isEmpty(detailList)) MesException.throwMesBusiException("选择数据无效,请检查");

@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.model.MesProduceSnPrintModel;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -20,11 +21,14 @@ import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.hutool.core.stream.CollectorUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -80,7 +84,7 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
@Override
public void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber) {
String userName, Integer editionNumber, boolean isFree, List<MesCutSchemeFg> mesCutSchemeFgs) {
List<MesWorkOrder> workOrderList = getMesWorkOrders(workOrderIds, organizeCode);
@ -88,9 +92,16 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
MesCutScheme cutScheme = getMesCutScheme(cutCode, organizeCode);
List<MesCutSchemeMaterial> cutSchemeMaterialList = getMesCutSchemeMaterials(cutCode, organizeCode);
List<MesCutSchemeFg> cutSchemeFgList = getMesCutSchemeFgs(cutCode, organizeCode);
log.info("isFree={}", isFree);
List<MesCutSchemeFg> cutSchemeFgList = new ArrayList<>();
if (!isFree) {
cutSchemeFgList = getMesCutSchemeFgs(cutCode, organizeCode);
} else {
if (CollectionUtils.isEmpty(mesCutSchemeFgs)) {
MesException.throwMesBusiException("未选择裁片成品");
}
cutSchemeFgList.addAll(mesCutSchemeFgs);
}
// 校验工单物料是否已在成品配置中进行维护
checkWorkOrderPartValid(workOrderList, cutSchemeFgList);
@ -125,19 +136,27 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
workOrderCut.setCutWorkOrderNo(cutWorkOrderNo);
workOrderCut.setOrganizeCode(organizeCode);
workOrderCut.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
workOrderCuttList.add(workOrderCut);
for (MesCutSchemeMaterial cutSchemeMaterial : cutSchemeMaterialList) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
// 44838 如果isFree 是 默认已打印
Integer printStatus = MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue();
if (isFree) {
printStatus = MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue();
}
workOrderCut.setPrintStatus(printStatus);
workOrderCuttList.add(workOrderCut);
if (!isFree) {
List<MesCutSchemeMaterial> cutSchemeMaterialList = getMesCutSchemeMaterials(cutCode, organizeCode);
for (MesCutSchemeMaterial cutSchemeMaterial : cutSchemeMaterialList) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
}
}
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
for (MesWorkOrder workOrder : workOrders) {
@ -154,8 +173,9 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
}
}
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
if (!isFree) {
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
}
workOrderCutDetailRepository.saveAll(workOrderCutDetailtList);
workOrderCutRepository.saveAll(workOrderCuttList);
@ -172,6 +192,34 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
@Override
@Transactional
public void generateCutWorkOrderMaterial(WorkOrderMaterialCutModel workOrderMaterialCutModel) {
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
List<MesWorkOrderCutMaterial> workOrderCutMaterialList = new ArrayList<>();
for (MesCutSchemeMaterial cutSchemeMaterial : workOrderMaterialCutModel.getMesCutSchemeMaterialList()) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderMaterialCutModel.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
}
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderMaterialCutModel.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
workOrderCutRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted", "printStatus"},
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue() }, packBean);
}
@Override
public ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderCutDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderCutDetail.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);

@ -967,10 +967,24 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//查询产线信息
MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getWorkCenterCode());
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion());
String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
String bomVersion = mesProductVersion.getAlternativePartList();
if (!StringUtil.isEmpty(partProdGroupCode)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
// 没有零件生产组用默认找生产版本、有的话找获取bom方式枚举枚举是基于默认BOM 则直接找
if (!mesPartProdGroupList.isEmpty()) {
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) {
log.info("基于默认BOM获取BOM");
bomVersion = "";
}
}
}
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
//报工类型
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
@ -1068,7 +1082,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty());
}
}
String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
/*String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partProdGroupCode,"partProdGroupCode",ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
@ -1081,8 +1095,25 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
bomVersion = mesProductVersion.getAlternativePartList();
}
}
}*/
String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
//获取生产版本, partProdGroupCode 不为空查询的数据不为空查询数据中的获取bom方式不为空且枚举是 基于默认BOM 才bomversion = null 否则都是通过生产版本找bom
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
String bomVersion = mesProductVersion.getAlternativePartList();
if (!StringUtil.isEmpty(partProdGroupCode)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
if (!mesPartProdGroupList.isEmpty()) {
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
if (mesPartProdGroup.getEnableBomVersion() != null && mesPartProdGroup.getEnableBomVersion() == MesExtEnumUtil.ENABLE_BOM_VERSION.ENABLE_BOM_VERSION_2.getValue()) {
log.info("基于默认BOM获取BOM");
bomVersion = "";
}
}
}
//生成条码
String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName());
//保存数据

@ -0,0 +1,242 @@
#\u9879\u76EE\u7AEF\u53E3
server.port=8300
#\u672C\u673Aip
impp.server.ip=localhost
#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740
impp.console.ip=http://10.193.30.22:8010
################ \u529F\u80FD\u914D\u7F6E1 ################
#mes webservice\u5F00\u5173
mes.webservice.open=true
#\u5DE5\u4F5C\u533AID,\u4E0D\u540C\u670D\u52A1\u5668\u4E0D\u540CID 0 - 31
impp.snowflake.work.id=19
#\u6570\u636E\u4ED3\u533AID 0 - 31 \u6709\u9ED8\u8BA4\u56FA\u5B9AID
impp.snowflake.database.id=11
#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165
impp.cluster.fetch=false
#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3
impp.cluster.regist.center=http://10.193.30.22:8000/eureka/
#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2
logging.config=classpath:log4j2-spring.xml
########\u5E73\u53F0\u76F8\u5173\u53C2\u6570##########
#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58
impp.config.redis=true
#\u662F\u5426\u5F00\u542Fmongo
impp.config.mongo=true
#\u662F\u5426\u5F00\u542FrabbitMQ
impp.config.rabbitmq=false
#\u662F\u5426\u5F00\u542Fswagger
impp.config.swagger=true
#\u662F\u5426\u5F00\u542Fwebsocket
impp.config.websocket=true
#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1
impp.config.fileserver=fastdfs
#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.controller=false
#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.service=false
################ \u961F\u5217\u5904\u7406 ################
#\u7AD9\u5185\u4FE1
impp.mq.queue.letter=true
#\u90AE\u4EF6
impp.mq.queue.mail=true
#\u5B9A\u65F6\u4EFB\u52A1
impp.mq.queue.schedule=true
#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217
impp.mq.queue.sweb.notice=true
################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################
#elasticsearch ip \u591A\u4E2A\u7528\u9017\u53F7\u9694\u5F00
elasticsearch.ip=10.193.30.22:9200
################ FastDfs \u914D\u7F6E ################
#tracker\u670D\u52A1\u5668ip
fastdfs.tracker_servers=10.193.30.22:22122
# tracker\u7684http\u7AEF\u53E3
fastdfs.http_tracker_http_port=22122
# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740
fastdfs.http.ui.host=http://dfs.estsh.com
#\u5BC6\u7801
#fastdfs.http.secret_key=
#\u8FDE\u63A5\u8D85\u65F6
fastdfs.connect_timeout_in_seconds=500000
#\u4F20\u8F93\u8D85\u65F6
fastdfs.network_timeout_in_seconds=60000000
fastdfs.charset=UTF-8
# token \u9632\u76D7\u94FE\u529F\u80FD
fastdfs.http_anti_steal_token=no
#redisIP
redis.hostName=10.193.30.9
#\u7AEF\u53E3\u53F7
redis.port=6379
#\u5982\u679C\u6709\u5BC6\u7801
redis.password=(mfLEu7@9kmfdsTy
##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################## rabbitMQ\u914D\u7F6E ####################
spring.rabbitmq.vhost=/
spring.rabbitmq.host=10.193.30.18
spring.rabbitmq.port=15672
spring.rabbitmq.username=root
spring.rabbitmq.password=(mfLEu7@9kmfdsTy
##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################ \u529F\u80FD\u914D\u7F6E2 ################
#\u662F\u5426\u5F00\u542Fredis
mes.redis.open=true
#\u662F\u5426\u5141\u8BB8\u524D\u7AEF\u8DE8\u57DF\u63D0\u4EA4
impp.web.cross=true
################ \u6388\u6743\u8FC7\u6EE4\u914D\u7F6E ################
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.user.filteruri=/mes/operate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.admin.filteruri=/mes/adoperate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.saadmin.filteruri=/mes/saoperate/*
################ \u4E91\u914D\u7F6E \uFF08\u4EE5projectName\u4F5C\u4E3A\u5E94\u7528\u540D\uFF09 ################
#\u662F\u5426\u5F00\u542F\u5FAE\u670D
eureka.client.enabled=false
#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694
eureka.client.service-url.defaultZone=${impp.cluster.regist.center}
#\u533A\u57DF\uFF08\u6E90\u7801\u4E2D\u5305\u542BdefaultZone\uFF0C\u6240\u4EE5\u9ED8\u8BA4\u4F7F\u7528defaultZone\uFF09
#eureka.client.region=estsh
#eureka.client.service-url.estsh:http://192.168.1.20:8000/eureka/,http://192.168.1.20:8001/eureka/
################ \u672C\u673A\u5FAE\u670D\u914D\u7F6E ################
#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09
eureka.instance.ip-address=${impp.server.ip}
#\u672C\u670D\u52A1\u5B9E\u4F8BID
eureka.instance.instance-id=${impp.server.ip}:${server.port}
#\u672C\u670D\u52A1\u4E3B\u673A\u540D
eureka.instance.hostname=${impp.server.ip}
#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762
eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html
#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server
eureka.instance.prefer-ip-address=true
#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5
eureka.client.healthcheck.enabled=true
################ \u68C0\u6D4B\u673A\u5236 ################
#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A
eureka.instance.lease-expiration-duration-in-seconds=30
#\u5FC3\u8DF3\u5468\u671F
eureka.instance.lease-renewal-interval-in-seconds=20
#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2
eureka.client.eureka-connection-idle-timeout-seconds=1
#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2
eureka.client.initial-instance-info-replication-interval-seconds=1
#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.instance-info-replication-interval-seconds=1
#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.registry-fetch-interval-seconds=1
################ \u6253\u5F00feign\u7684\u7194\u65AD ################
feign.hystrix.enabled=true
#\u8BFB\u53D6\u6570\u636E\u65F6\u957F
ribbon.ReadTimeout=100000
#\u8FDE\u63A5\u65F6\u957F
ribbon.ConnectTimeout=100000
#\u91CD\u8BD5
ribbon.maxAutoRetries=2
#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=150000
#\u96C6\u7FA4\u540D
eureka.instance.metadata-map.cluster=impp_cluster
################ \u94FE\u8DEF\u8FFD\u8E2A ################
#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F
spring.zipkin.sender.type=web
#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740
spring.zipkin.base-url=${impp.console.ip}
#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8
spring.sleuth.sampler.probability=1.0
################ \u65E5\u5FD7\u636E\u6E90 ################
spring.data.mongodb.database=mongoDBSource
spring.data.mongodb.uri=10.193.30.22:27017
spring.data.mongodb.username=sa
spring.data.mongodb.password=i3plus
spring.data.mongodb.port=27017
################ \u4E3B\u6570\u636E\u6E90 ################
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=true
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.schedule.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.username=root
impp.schedule.datasource.password=(mfLEu7@9kmfdsTy
impp.schedule.datasource.max-connections=20
#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C
impp.schedule.start.after-second=20
#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72
impp.schedule.datasource.is-clustered=true
#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C
impp.schedule.datasource.cluster-checkin-interval=30000
#\u7EBF\u7A0B\u6570
impp.schedule.thread-count=10
#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5
impp.schedule.thread-priority=5
################ \u6570\u636E\u6C60\u8BBE\u7F6E ################
## \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF0C\u9ED8\u8BA4\u662F10
spring.datasource.hikari.maximum-pool-size=100
## \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570\u91CF
spring.datasource.hikari.minimum-idle=10
## \u7A7A\u95F2\u8FDE\u63A5\u5B58\u6D3B\u6700\u5927\u65F6\u95F4\uFF0C\u9ED8\u8BA4600000\uFF0810\u5206\u949F\uFF09
spring.datasource.hikari.idle-timeout=600000
## \u6B64\u5C5E\u6027\u63A7\u5236\u6C60\u4E2D\u8FDE\u63A5\u7684\u6700\u957F\u751F\u547D\u5468\u671F\uFF0C\u503C0\u8868\u793A\u65E0\u9650\u751F\u547D\u5468\u671F\uFF0C\u9ED8\u8BA41800000\u537330\u5206\u949F
spring.datasource.hikari.max-lifetime=1800000
## \u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4,\u9ED8\u8BA430\u79D2\uFF0C\u537330000
spring.datasource.hikari.connection-timeout=30000
################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################
# mysql
spring.jpa.database=MYSQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
##Sql-server##
#spring.jpa.database=sql_server
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
##oracle##
#spring.jpa.database=oracle
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
# mysql
spring.datasource.validationQuery=SELECT 1
##Sql-server##
# spring.datasource.validationQuery=SELECT 1
##oracle##
# spring.datasource.validationQuery=SELECT 1 FROM DUAL
#ImprovedNamingStrategy / physical_naming_strategy java\u5C5E\u6027\u6620\u5C04\u5230\u6570\u636E\u5E93\u5B57\u6BB5\u65F6\u547D\u540D\u89C4\u5219
# spring.jpa.properties.hibernate.physical_naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy/org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
#\u8868\u5173\u7CFBcreate,create-drop,update,validate
spring.jpa.properties.hibernate.hbm2ddl.auto=none
#\u662F\u5426\u663E\u793Asql
spring.jpa.show-sql=true
################ \u6388\u6743\u914D\u7F6E ################
slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2
slm.app.id=20190513
###################\uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD##################################################
project.entity.path=cn.estsh.i3plus.pojo
impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.write.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
impp.write.datasource.username=root
impp.write.datasource.password=(mfLEu7@9kmfdsTy
impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.read.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
impp.read.datasource.username=root
impp.read.datasource.password=(mfLEu7@9kmfdsTy
#impp.schedule.scheduleType=xxljob
#xxl.job.admin.addresses=http://10.193.30.22:10010/xxl-job-admin
#### xxl-job, access token
#xxl.job.accessToken=
#### xxl-job executor appname
##xxl.job.executor.appname=${project.name}
#xxl.job.executor.appname=i3mes-castle
#### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
#xxl.job.executor.address=
#### xxl-job executor server-info
#xxl.job.executor.ip=172.24.96.1
##xxl.job.executor.ip=
##xxl.job.executor.port=9999
#xxl.job.executor.port=8888
#### xxl-job executor log-path
#xxl.job.executor.logpath=
#### xxl-job executor log-retention-days
#xxl.job.executor.logretentiondays=10
#xxl.job.basePackage=cn.estsh.i3plus.ext.mes.apiservice.schedulejob
impp.app.ext.base-packages=cn.estsh.i3plus.ext.mes.apiservice

@ -1,6 +1,7 @@
#\u9879\u76EE\u540D\u79F0
spring.application.name=i3mes
#\u4F7F\u7528\u914D\u7F6E
#\u4F7F\u7528\u914D\u7F6E
spring.profiles.active=docker,cus-docker
######### \u81EA\u5B9A\u4E49\u53C2\u6570 #########
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C
@ -38,7 +39,7 @@ impp.app.pojo-packages=cn.estsh.i3plus.pojo.mes
impp.app.ext.pojo-packages=cn.estsh.i3plus.ext.mes.pojo.**
#dao\u63A5\u53E3\u5305
impp.app.pojo-dao=${impp.app.base-packages}.apiservice.dao
impp.app.ext.pojo-dao=${impp.app.ext.base-packages}.dao
impp.app.ext.pojo-dao=${impp.app.ext.pojo-packages}.dao
#mongo-dao\u63A5\u53E3\u5305
impp.app.pojo-mongo-dao=${impp.app.base-packages}.**.apiservice.daomongo
#\u5BF9\u8C61\u6301\u4E45\u5316\u5305\u8DEF\u5F84\uFF0C\u53EF\u4EE5\u591A\u4E2A\u5305\uFF0C\u9017\u53F7\u5206\u9694

@ -0,0 +1,24 @@
package cn.estsh.i3plus.ext.mes.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import lombok.Data;
import java.util.List;
@Data
public class WorkOrderCutModel {
private Long[] workOrderIds;
private String cutCode;
private String remark;
private Integer editionNumber;
private boolean isFree = false ;
private List<MesCutSchemeFg> mesCutSchemeFgs;
}

@ -0,0 +1,17 @@
package cn.estsh.i3plus.ext.mes.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeMaterial;
import lombok.Data;
import java.util.List;
@Data
public class WorkOrderMaterialCutModel {
private String cutWorkOrderNo;
private List<MesCutSchemeMaterial> mesCutSchemeMaterialList;
}

@ -90,7 +90,7 @@ public class MesInspectionProductDataAmountReportModel implements Serializable {
private String sn;
@ApiParam("数量")
private Integer qty;
private Double qty;
@ApiParam("生产线名称")
private String workCenterName;
@ -121,7 +121,7 @@ public class MesInspectionProductDataAmountReportModel implements Serializable {
public MesInspectionProductDataAmountReportModel() {}
public MesInspectionProductDataAmountReportModel(Long id, Long pid, String inspectionDate, String modifyDatetime, String partName, String partNo, String sn, Integer qty, String workCenterCode,
public MesInspectionProductDataAmountReportModel(Long id, Long pid, String inspectionDate, String modifyDatetime, String partName, String partNo, String sn, Double qty, String workCenterCode,
String createUser, String ncModifyUser, Integer inspectionStatus, Integer ncStatus, String defectLocation, Integer frontBack, String defectTypeName,
String lgort, String umlgo, String zrsum, Integer taskStatus, String reworkOrder, String modifyUser, String partTypeCode, String workCenterName) {
this.id = id;

@ -193,6 +193,9 @@ public class MesExtConstWords {
public static final String PRT_VEHICLE_COUNT = "prtVehicleCount";
//车型代码
public static final String VEHICLE_NO = "vehicleNo";
//车型代码
public static final String VEHICLE_CLASS_NO = "vehicleClassNo";
//拉动单类型
public static final String PULL_ORDER_TYPE = "pullOrderType";
//拉动单状态
@ -239,6 +242,8 @@ public class MesExtConstWords {
public static final String DEFAULT_FLAG = "defaultFlag";
//零件类型
public static final String PART_TYPE = "partType";
//零件类型名称
public static final String PART_TYPE_NAME = "partTypeName";
//时间[开始/结束]条件
public static final String START_TIME_START = "startTimeStart";

Loading…
Cancel
Save