diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IWorkOrderExtService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IWorkOrderExtService.java index 8b058ea..982ad67 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IWorkOrderExtService.java @@ -6,8 +6,6 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import io.swagger.annotations.ApiOperation; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import java.util.List; diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/jx/JxWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/jx/JxWorkOrderController.java index 021de37..60d22bf 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/jx/JxWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/jx/JxWorkOrderController.java @@ -55,7 +55,7 @@ public class JxWorkOrderController extends MesBaseController { public ResultBean deletePackageSnRepairByPager(String workOrderNo, String sn, Pager pager) { try { ValidatorBean.checkNotNull(workOrderNo, "工单号不能为空"); - return ResultBean.success("修改成功") + return ResultBean.success("查询成功") .setListPager(jxWorkOrderService.queryRepairSnByPager(workOrderNo, sn, AuthUtil.getOrganize().getOrganizeCode(), pager)) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java index 944f36a..46f2924 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/WorkOrderExtService.java @@ -4,15 +4,9 @@ import cn.estsh.i3plus.ext.mes.api.base.IWorkOrderExtService; import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderLogExtService; import cn.estsh.i3plus.ext.mes.api.busi.IWorkOrderStartService; import cn.estsh.i3plus.ext.mes.icloud.sdk.IWmsErpHouseCheckCloud; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesAffiliatedStartConfig; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesPartExt; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesWorkOrderExt; -import cn.estsh.i3plus.ext.mes.pojo.bean.MesWorkOrderLogExt; +import cn.estsh.i3plus.ext.mes.pojo.bean.*; import cn.estsh.i3plus.ext.mes.pojo.model.*; -import cn.estsh.i3plus.ext.mes.pojo.repository.MesAffiliatedStartConfigRepository; -import cn.estsh.i3plus.ext.mes.pojo.repository.MesPartExtRepository; -import cn.estsh.i3plus.ext.mes.pojo.repository.MesWorkOrderExtRepository; -import cn.estsh.i3plus.ext.mes.pojo.repository.MesWorkOrderLogExtRepository; +import cn.estsh.i3plus.ext.mes.pojo.repository.*; import cn.estsh.i3plus.ext.mes.pojo.util.ConvertBeanExt; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; @@ -64,6 +58,7 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -80,10 +75,12 @@ public class WorkOrderExtService implements IWorkOrderExtService { @Autowired private MesWorkOrderLogExtRepository workOrderLogRepository; + @Autowired private MesPartExtRepository partExtRepository; + @Autowired - private MesWorkCenterRepository workCenterRepository; + private MesWorkCenterExtRepository workCenterRepository; @Autowired private ISyncFuncService syncFuncService; @@ -487,12 +484,12 @@ public class WorkOrderExtService implements IWorkOrderExtService { if (!CollectionUtils.isEmpty(workOrderPageVos)) { List workCenterCodeList = workOrderPageVos.stream() .filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()))).map(WorkOrderPageVo::getWorkCenterCode).collect(Collectors.toList()); - Map workCenterCodeMap = null; + Map workCenterCodeMap = null; if (!CollectionUtils.isEmpty(workCenterCodeList)) { DdlPackBean ddl = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(workCenterCodeList, MesExtConstWords.WORK_CENTER_CODE, ddl); - List workCenterList = workCenterRepository.findByHqlWhere(ddl); - workCenterCodeMap = workCenterList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName)); + List workCenterList = workCenterRepository.findByHqlWhere(ddl); + workCenterCodeMap = workCenterList.stream().filter(o -> null != o).collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, Function.identity(), (x,y) -> y)); } for (WorkOrderPageVo workOrderPageVo : workOrderPageVos) { @@ -507,8 +504,15 @@ public class WorkOrderExtService implements IWorkOrderExtService { workOrderPageVo.setWorkOrderSourceName(MesExtEnumUtil.WORK_ORDER_SOURCE.valueOfDescription(workOrderPageVo.getWorkOrderSource())); if(!StringUtils.isEmpty(workOrderPageVo.getWorkCenterCode()) && !CollectionUtils.isEmpty(workCenterCodeMap)){ - workOrderPageVo.setWorkCenterName(workCenterCodeMap.get(workOrderPageVo.getWorkCenterCode())); + + MesWorkCenterExt workCenterExt = workCenterCodeMap.get(workOrderPageVo.getWorkCenterCode()); + + workOrderPageVo.setWorkCenterName(workCenterExt.getWorkCenterName()); + + workOrderPageVo.setIsNoumenon(workCenterExt.getLineType().equals(String.valueOf(MesExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getValue())) ? MesExtEnumUtil.YES_OR_NO.YES.getValue() : MesExtEnumUtil.YES_OR_NO.NO.getValue()); + } + //mes生产工单页面按钮控制 workOrderPageVo.setMesButtonFlagModel(this.getMesButtonFlagModel(workOrderPageVo)); } @@ -1528,7 +1532,7 @@ public class WorkOrderExtService implements IWorkOrderExtService { return model; } - List workCenterList = workCenterRepository.findByProperty( + List workCenterList = mesWorkCenterRDao.findByProperty( new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID}, new Object[]{model.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()}); Map> workVerMap = CollectionUtils.isEmpty(workCenterList) ? null : diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxWorkOrderService.java index 574b93e..020b43a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/jx/JxWorkOrderService.java @@ -66,7 +66,7 @@ public class JxWorkOrderService implements IJxWorkOrderService { MesWorkCenterExt workCenterExt = getMesWorkCenterExt4WorkOrderNo(workOrderNo); - if (workCenterExt.getLineType().equals(MesExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getDescription())) { + if (workCenterExt.getLineType().equals(String.valueOf(MesExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getValue()))) { // 本体 deleteProduceSnRepair(workOrderNo, snArr, organizeCode, userName); } else { @@ -89,7 +89,7 @@ public class JxWorkOrderService implements IJxWorkOrderService { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("条码无效") + .setErrorDetail("返工条码不存在") .build(); } @@ -119,7 +119,7 @@ public class JxWorkOrderService implements IJxWorkOrderService { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("返工条码[%s]不存在") + .setErrorDetail("返工条码不存在") .build(); } @@ -137,7 +137,7 @@ public class JxWorkOrderService implements IJxWorkOrderService { MesWorkCenterExt workCenterExt = getMesWorkCenterExt4WorkOrderNo(workOrderNo); - if (workCenterExt.getLineType().equals(MesExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getDescription())) { + if (workCenterExt.getLineType().equals(String.valueOf(MesExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getValue()))) { // 本体 return queryRepairProduceSnByPager(workOrderNo, sn, organizeCode, pager); @@ -239,6 +239,7 @@ public class JxWorkOrderService implements IJxWorkOrderService { produceSnExt.setModifyUserExt(userName); produceSnExt.setModifyDatetime(nowTime); produceSnExt.setModifyUserExt(nowTime); + produceSnExt.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue()); produceSnExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); produceSnExt.setSystemSyncStatusExt(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); } else { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindSnExcelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindSnExcelService.java index 8e96f82..8e9b6ad 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindSnExcelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindSnExcelService.java @@ -211,6 +211,12 @@ public class SxReworkOrderBindSnExcelService implements IExcelImportExtService { errorInfo += "第B列数据条码[" + produceSn +"]质量状态为["+ MesExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExt.getQcStatus()) + "];"; } + if (MesExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) { + errorNum ++; + cellNum += "B;"; + errorInfo += "第B列数据条码[" + produceSn +"]操作类型为["+ MesExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExt.getQcStatus()) + "];"; + } + if (!produceSnExt.getPartNo().equals(workOrderExt.getPartNo())) { errorNum ++; cellNum += "B;"; @@ -295,6 +301,10 @@ public class SxReworkOrderBindSnExcelService implements IExcelImportExtService { ConvertBean.serviceModelUpdate(produceSnExt, userName); new ConvertBeanExt(produceSnExt).convertBean(produceSnExt); produceSnExt.setLastWorkOrderNo(finalWorkOrderNoBySn.get(produceSnExt.getProductSn())); + produceSnExt.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.REPAIR.getValue()); + produceSnExt.setRouteCode(null); + produceSnExt.setProcessCode(null); + produceSnExt.setWorkCellCode(null); produceSnExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindZjSnExcelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindZjSnExcelService.java index 193d2f5..82ed0f6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindZjSnExcelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/jx/SxReworkOrderBindZjSnExcelService.java @@ -142,26 +142,6 @@ public class SxReworkOrderBindZjSnExcelService implements IExcelImportExtService //校验工单是否存在,如果不存在则从数据库获取,如果存在则从集合中获取 workOrderExt = getMesWorkOrderExt(organizeCode, workOrderMapByOrderNo, workOrderNo); - MesPartExt partExt = null; - - partExt = getMesPartExt(organizeCode, partMap, workOrderExt, partExt); - - if (partExt == null) { - errorNum ++; - cellNum += "A;"; - errorInfo += "第A列数据工单[" + workOrderNo + "]关联物料["+ workOrderExt.getPartNo() +"]不存在;"; - } else { - partMap.put(workOrderExt.getPartNo(), partExt); - - // 组件 - if (!StringUtils.isEmpty(partExt.getCategoryCode3()) && partExt.getCategoryCode3().equals("10")) { - errorNum ++; - cellNum += "A;"; - errorInfo += "第A列数据工单[" + workOrderNo + "]关联物料["+ workOrderExt.getPartNo() +"]不为组件;"; - } - - } - Double boundSnQty = 0.0; if (workOrderExt == null) { @@ -182,6 +162,29 @@ public class SxReworkOrderBindZjSnExcelService implements IExcelImportExtService errorInfo += "第A列数据不为返工工单;"; } else { + MesPartExt partExt = null; + + partExt = getMesPartExt(organizeCode, partMap, workOrderExt, partExt); + + if (partExt == null) { + + errorNum ++; + cellNum += "A;"; + errorInfo += "第A列数据工单[" + workOrderNo + "]关联物料["+ workOrderExt.getPartNo() +"]不存在;"; + + } else { + + partMap.put(workOrderExt.getPartNo(), partExt); + + // 组件 + if (!StringUtils.isEmpty(partExt.getCategoryCode3()) && partExt.getCategoryCode3().equals("10")) { + errorNum ++; + cellNum += "A;"; + errorInfo += "第A列数据工单[" + workOrderNo + "]关联物料["+ workOrderExt.getPartNo() +"]不为组件;"; + } + + } + boundSnQty = getBoundSnQty(organizeCode, boundProdSnQtyMapByOrderNo, workOrderNo, packSnByWorkOrderNo); if (boundSnQty.compareTo(workOrderExt.getQty()) > 0) { @@ -210,7 +213,7 @@ public class SxReworkOrderBindZjSnExcelService implements IExcelImportExtService } else { packageExt = packageExtRepository.getByProperty( - new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, "packageNo"}, + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.PACKAGENO}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packageNo}); if (null == packageExt) { @@ -218,7 +221,7 @@ public class SxReworkOrderBindZjSnExcelService implements IExcelImportExtService cellNum += "B;"; errorInfo += "第B列数据条码[" + packageNo + "]不存在;"; } else { - if (MesEnumUtil.PACKAGE_IS_SEALED.UNSEALED.getValue() != packageExt.getIsSealed()) { + if (MesEnumUtil.PACKAGE_IS_SEALED.UNSEALED.getValue() == packageExt.getIsSealed()) { errorNum ++; cellNum += "B;"; errorInfo += "第B列数据条码[" + packageNo +"]状态为未封箱"; @@ -269,7 +272,7 @@ public class SxReworkOrderBindZjSnExcelService implements IExcelImportExtService record.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); record.setPackageNo(packageExt.getPackageNo()); record.setLotNo(packageExt.getLotNo()); - record.setQty(packageExt.getQty()); + record.setQty(0.0); record.setInitWorkOrderNo(packageExt.getLastWorkOrderNo()); record.setInitWorkCenterCode(packageExt.getWorkCenterCode()); record.setInitQty(packageExt.getQty()); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesEquipmentCheck.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesEquipmentCheck.java index dfab8d5..e32e904 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesEquipmentCheck.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/bean/MesEquipmentCheck.java @@ -57,6 +57,10 @@ public class MesEquipmentCheck extends BaseBean implements Serializable { @ApiParam("设备编号") private String equNo; + @Column(name = "EQU_MANAGE_NO") + @ApiParam("设备管理号") + private String equManageNo; + @Column(name = "EQU_NAME") @ApiParam("设备名称") private String equName; diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/WorkOrderPageVo.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/WorkOrderPageVo.java index ba7afef..33e2fa8 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/WorkOrderPageVo.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/WorkOrderPageVo.java @@ -132,6 +132,9 @@ public class WorkOrderPageVo implements Serializable { @ApiParam(value = "是否有解绑数量") public String isExistUnbindSnName; + @ApiParam(value = "是否为本体") + public Integer isNoumenon; + public WorkOrderPageVo(Long id, String createUser, String createDatetime, String modifyUser, String modifyDatetime, String orderNo, Double seq, String seq1, String startTime, String endTime, String workCenterCode, String workOrderSource, Integer workOrderStatus, Integer workOrderType, Double qty, Double planQty, Double completeQty, Double repairQty, String partNo, String partNameRdd, String areaCode, String erpWarehouse, String memo, String outPutFlag, String scheduleDate, Long unbindSnCount) { this.areaCode = areaCode; this.workOrderStatus = workOrderStatus; diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java index ce8323c..ceb12da 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java @@ -4740,4 +4740,114 @@ public class MesExtEnumUtil { } } + /** + * 是 或 否 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum YES_OR_NO { + + YES(10, "是"), + NO(20, "否"); + + private int value; + private String description; + + YES_OR_NO(int value, String description) { + this.value = value; + this.description = description; + } + + public static String valueOfDescription(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static Integer descriptionOfValue(String description) { + Integer tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].description.equals(description)) { + tmp = values()[i].value; + } + } + return tmp; + } + + public static YES_OR_NO getByValue(int value) { + for (YES_OR_NO codeType : values()) { + if (codeType.getValue() == value) { + return codeType; + } + } + return null; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + } + + /** + * 条码操作类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum SN_OPERATE_TYPE { + QUALIFIED(10, "合格"), + REPAIR(20, "返修"); + + private int value; + private String description; + + SN_OPERATE_TYPE(int value, String description) { + this.value = value; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + + public static String valueOfDescription(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static String valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static SN_OPERATE_TYPE getByValue(int value) { + for (SN_OPERATE_TYPE snOperateType : values()) { + if (snOperateType.getValue() == value) { + return snOperateType; + } + } + return null; + } + } + + }