diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IProcedureOnSiteService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IProcedureOnSiteService.java index ee323b9..1817cc3 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IProcedureOnSiteService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IProcedureOnSiteService.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import io.swagger.annotations.ApiOperation; import java.util.List; +import java.util.Map; /** * @Author: wangjie @@ -68,7 +69,7 @@ public interface IProcedureOnSiteService { * @return */ @ApiOperation(value = "修改巡检单明细数据", notes = "修改巡检单明细数据") - Boolean updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName); + Map updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName); List findProjectSort(MesProjectSort procedureProject); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IProduceSnExtService.java index 2b0b1ed..0e9b631 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IProduceSnExtService.java @@ -166,7 +166,7 @@ public interface IProduceSnExtService { * @Date 2021/5/21 13:54 **/ @ApiOperation(value = "手动生成包装条码", notes = "手动生成包装条码") - void doWorkOrderHandCreatePackage(Long id, String organizeCode, String userInfo); + List doWorkOrderHandCreatePackage(Long id, String organizeCode, String userInfo, Integer operateType, Integer qty); /** * @Description: 进行弹框二次提示“包装数量为***,可产生N个包装条码,&&&“ diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/ISxWorkOrderAutoCreateSnService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/ISxWorkOrderAutoCreateSnService.java index c706075..2596667 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/ISxWorkOrderAutoCreateSnService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/job/ISxWorkOrderAutoCreateSnService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.api.job; +import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPackageExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPartExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProdPackExt; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt; @@ -62,5 +63,14 @@ public interface ISxWorkOrderAutoCreateSnService { * @Date 2021/5/24 9:52 **/ @ApiOperation(value = "插入包装", notes = "插入包装") - void insertPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb,Double num, String userInfo); + List insertPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb, Double num, String userInfo); + + /** + * @Description: 插入封箱包装 + * @Param [packageNoList, workOrder, partDb, codeType, prodPackDb, userInfo] + * @return void + * @Date 2021/5/24 9:52 + **/ + @ApiOperation(value = "插入封箱包装", notes = "插入封箱包装") + List insertSealedPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb, Double num, String userInfo); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/ProcedureOnSiteController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/ProcedureOnSiteController.java index 5b42747..ccd3aad 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/ProcedureOnSiteController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/base/ProcedureOnSiteController.java @@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; /** * @Author: wangjie @@ -140,8 +141,12 @@ public class ProcedureOnSiteController extends MesPcnBaseController { @ApiOperation(value = "修改巡检单明细数据") public ResultBean updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName) { try { - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) - .setResultObject(procedureOnSiteService.updateMesOnSiteOrderDetail(mesOnSiteOrderDetail, userName)); + + Map resultMap = procedureOnSiteService.updateMesOnSiteOrderDetail(mesOnSiteOrderDetail, userName); + + return ResultBean.success(!resultMap.containsKey("UPDATE_MEMO_RESULT") ? "操作成功" : (String) resultMap.get("UPDATE_MEMO_RESULT")) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultObject(resultMap.get("RESULT")); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ProduceSnExtController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ProduceSnExtController.java index 23b0371..88b6e1f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ProduceSnExtController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/ProduceSnExtController.java @@ -108,7 +108,7 @@ public class ProduceSnExtController extends MesPcnBaseController { ValidatorBean.checkNotNull(id); ValidatorBean.checkNotNull(organizeCode); ValidatorBean.checkNotNull(userInfo); - produceSnExtService.doWorkOrderHandCreatePackage(id, organizeCode, userInfo); + produceSnExtService.doWorkOrderHandCreatePackage(id, organizeCode, userInfo, 1, 0); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ProcedureOnSiteService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ProcedureOnSiteService.java index c88dd19..83c851b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ProcedureOnSiteService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/ProcedureOnSiteService.java @@ -2,10 +2,12 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.pcn.api.base.IPartExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IProcedureOnSiteService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxPcnHttpService; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOnSiteOrder; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOnSiteOrderDetail; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProcedureProject; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProjectSort; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WmsSnInfoModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesOnSiteOrderDetailRepository; import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesOnSiteOrderRepository; import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesProcedureProjectRepository; @@ -13,8 +15,10 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesProjectSortRepository; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; +import cn.estsh.i3plus.mes.pcn.util.PcnHttpUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -26,14 +30,16 @@ import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; import cn.estsh.i3plus.pojo.mes.sqlpack.MesPcnHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import com.alibaba.fastjson.JSONObject; +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.io.UnsupportedEncodingException; +import java.util.*; import java.util.stream.Collectors; /** @@ -42,6 +48,7 @@ import java.util.stream.Collectors; * @Description: **/ @Service +@Slf4j public class ProcedureOnSiteService implements IProcedureOnSiteService { @Autowired @@ -68,6 +75,9 @@ public class ProcedureOnSiteService implements IProcedureOnSiteService { @Autowired private MesProjectSortRepository mesProjectSortRDao; + @Autowired + private ISxPcnHttpService pcnHttpService; + @Override public List findMesWorkOrderByWoStatus(String workCenterCode, String organizeCode) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); @@ -185,7 +195,8 @@ public class ProcedureOnSiteService implements IProcedureOnSiteService { } @Override - public Boolean updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName) { + public Map updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName) { + Map updateResultMap = new HashMap<>(); //修改巡检单明细数据 MesOnSiteOrderDetail onSiteOrderDetail = mesOnSiteOrderDetailRDao.getById(mesOnSiteOrderDetail.getId()); if (null == onSiteOrderDetail) { @@ -195,6 +206,13 @@ public class ProcedureOnSiteService implements IProcedureOnSiteService { .setErrorDetail("数据不存在") .build(); } + + String updateMemoResult = updateOnSiteOrderDetailMemo(mesOnSiteOrderDetail, onSiteOrderDetail); + + if (!StringUtils.isEmpty(updateMemoResult)) { + updateResultMap.put("UPDATE_MEMO_RESULT", updateMemoResult); + } + BeanUtils.copyProperties(mesOnSiteOrderDetail, onSiteOrderDetail); onSiteOrderDetail.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); ConvertBean.serviceModelUpdate(onSiteOrderDetail, userName); @@ -214,21 +232,55 @@ public class ProcedureOnSiteService implements IProcedureOnSiteService { new Object[]{mesOnSiteOrderDetail.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtEnumUtil.IS_VAILD.VAILD.getValue(), mesOnSiteOrderDetail.getOrderNo()}); if (oDetailsTotal.size() == oDetails.size()) { -// mesOnSiteOrder.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CHECK_COMPLETE.getValue()); -// ConvertBean.serviceModelUpdate(mesOnSiteOrder, userName); -// -// mesOnSiteOrderRDao.save(mesOnSiteOrder); - - return true; + updateResultMap.put("RESULT", true); + return updateResultMap; } else { mesOnSiteOrder.setOrderStatus(MesPcnExtEnumUtil.MES_ORJ_ORDER_STATUS.CHECKING.getValue()); ConvertBean.serviceModelUpdate(mesOnSiteOrder, userName); - mesOnSiteOrderRDao.save(mesOnSiteOrder); } } - return false; + updateResultMap.put("RESULT", false); + return updateResultMap; + } + + private String updateOnSiteOrderDetailMemo(MesOnSiteOrderDetail mesOnSiteOrderDetail, MesOnSiteOrderDetail onSiteOrderDetail) { + if (!StringUtils.isEmpty(mesOnSiteOrderDetail.getMemo())) { + String requestUrl = pcnHttpService.getRequestUrl(mesOnSiteOrderDetail.getOrganizeCode(), MesPcnExtConstWords.FIND_PART_NO); + Map params = new HashMap<>(); + params.put(MesPcnExtConstWords.SN, mesOnSiteOrderDetail.getMemo()); + params.put(MesPcnExtConstWords.ORGANIZE_CODE, mesOnSiteOrderDetail.getOrganizeCode()); + WmsSnInfoModel wmsSnInfoModel = null; + try { + String data = PcnHttpUtil.doGet(requestUrl, params); + BaseResultBean baseResultBean = null; + + if (!StringUtils.isEmpty(data)) baseResultBean = JsonUtilTool.decode(data, BaseResultBean.class); + else log.error("updateMesOnSiteOrderDetail --- HTTP[{}]调用主接口失败 --- THREAD:[{}]", requestUrl, Thread.currentThread().getName()); + + log.error("updateMesOnSiteOrderDetail --- 工程巡检校验物料[{}]时获取WMS数据[{}] --- THREAD:[{}]", mesOnSiteOrderDetail.getMemo(), data, Thread.currentThread().getName()); + + if (null != baseResultBean && baseResultBean.success) { + LinkedHashMap resultObject = (LinkedHashMap) baseResultBean.getResultObject(); + wmsSnInfoModel= JsonUtilTool.decode(JSONObject.toJSONString(resultObject), WmsSnInfoModel.class); + } + if (wmsSnInfoModel == null) { + log.error("updateMesOnSiteOrderDetail --- 工程巡检校验物料[{}]时获取WMS数据失败 HTTP[{}]调用主接口 无法获取此条码信息 --- THREAD:[{}]", mesOnSiteOrderDetail.getMemo(),requestUrl, Thread.currentThread().getName()); + } + } catch (UnsupportedEncodingException e) { + log.error("updateMesOnSiteOrderDetail --- 工程巡检校验物料[{}]时获取WMS数据失败 HTTP[{}]调用主接口失败 --- THREAD:[{}]", mesOnSiteOrderDetail.getMemo(), requestUrl, Thread.currentThread().getName()); + } + + if (wmsSnInfoModel == null) { + onSiteOrderDetail.setMemo(mesOnSiteOrderDetail.getMemo()); + return String.format("条码[%s]不存在", mesOnSiteOrderDetail.getMemo()); + } else { + onSiteOrderDetail.setMemo(wmsSnInfoModel.getPartNo()); + return ""; + } + } + return ""; } @Override diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/SxWorkOrderExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/SxWorkOrderExtService.java index e29ae08..e87f2a5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/SxWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/SxWorkOrderExtService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.pcn.api.base.*; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWorkOrderLogExtService; import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.*; @@ -137,6 +138,9 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { @Autowired private MesBomPendingPartRepository bomPendingPartRepository; + @Autowired + private IProduceSnExtService produceSnExtService; + @Resource(name = MesPcnExtConstWords.REDIS_RES_PCN) private ImppRedis redisMesPcn; @@ -443,6 +447,7 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { DdlPreparedPack.getStringLikerPack(workOrderQueryDto.getPartNo(), "partNo", ddlPackBean); DdlPreparedPack.getStringEqualPack(workOrderQueryDto.getWorkCenterCode(), "workCenterCode", ddlPackBean); DdlPreparedPack.getNumEqualPack(workOrderQueryDto.getWorkOrderStatus(), "workOrderStatus", ddlPackBean); + DdlPreparedPack.getInPackArray(workOrderQueryDto.getWorkOrderStatusArray(), "workOrderStatus", ddlPackBean); DdlPreparedPack.getNumEqualPack(workOrderQueryDto.getWorkOrderType(), "workOrderType", ddlPackBean); DdlPreparedPack.getStringLikerPack(workOrderQueryDto.getCreateUser(), "createUser", ddlPackBean); @@ -1536,11 +1541,13 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { double sumQty = getSumQty(qty, workOrder); + List packageExtList = produceSnExtService.doWorkOrderHandCreatePackage(workOrder.getId(), organizeCode, userName, 2, qty.intValue()); + saveWorkOrderExt(userName, workOrder, sumQty); insertManualReportTravel(organizeCode, userName, workOrder, qty, workCenterExt, shiftName); - insertSxProductOffLine(workOrderNo, qty, organizeCode, userName, workOrder, partExt); + insertSxProductOffLine(workOrderNo, qty, organizeCode, userName, workOrder, partExt, packageExtList); } @@ -1554,6 +1561,15 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { .setErrorDetail("报工数量[%s]与当前完工数量[%s]之和[%s]大于工单计划数量[%s]", workOrder.getCompleteQty(), qty, sumQty, workOrder.getQty()) .build(); } + + //if (qty % partExt.getQty2() != 0) { + // throw ImppExceptionBuilder.newInstance() + // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()) + // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + // .setErrorDetail("报工数量[%s]与物料包装数量", workOrder.getCompleteQty(), qty, sumQty, workOrder.getQty()) + // .build(); + //} + return sumQty; } @@ -1617,13 +1633,13 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { .build(); } - if (StringUtils.isEmpty(workCenterExt.getWorkTime())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("产线[%s]未启动班次", workOrder.getWorkCenterCode()) - .build(); - } + //if (StringUtils.isEmpty(workCenterExt.getWorkTime())) { + // throw ImppExceptionBuilder.newInstance() + // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()) + // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + // .setErrorDetail("产线[%s]未启动班次", workOrder.getWorkCenterCode()) + // .build(); + //} return workCenterExt; } @@ -1682,40 +1698,49 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService { mesManualReportTravelRepository.save(manualReportTravel); } - private void insertSxProductOffLine(String workOrderNo, Double qty, String organizeCode, String userName, MesWorkOrderExt workOrder, MesPartExt partExt) { + private void insertSxProductOffLine(String workOrderNo, Double qty, String organizeCode, String userName, MesWorkOrderExt workOrder, MesPartExt partExt, List packageExtList) { + + List productOffLineList = new ArrayList<>(); + + for (MesPackageExt mesPackageExt : packageExtList) { + SxProductOffLine productOffLine = new SxProductOffLine(); + productOffLine.setWorkOrderNo(workOrderNo); + productOffLine.setPartNo(workOrder.getPartNo()); + productOffLine.setPartName(workOrder.getPartNameRdd()); + productOffLine.setQty(mesPackageExt.getQty()); + productOffLine.setWorkCenterCode(workOrder.getWorkCenterCode()); + productOffLine.setErpWarehouse(workOrder.getErpWarehouse()); + productOffLine.setPackageNo(mesPackageExt.getPackageNo()); + //取物料信息中的类型 + + if (null != partExt) { + productOffLine.setUnit(partExt.getUnit()); + productOffLine.setProdType(getProdType(partExt.getCategoryCode1())); + productOffLine.setProdType(Integer.parseInt(partExt.getCategoryCode1())); + } + + if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrder.getWorkOrderType()) { + productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue()); + } else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrder.getWorkOrderType() ) { + productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.STANDARD_SN.getValue()); + } else { + productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.ATTEMPT_SN.getValue()); + } - SxProductOffLine productOffLine = new SxProductOffLine(); - productOffLine.setWorkOrderNo(workOrderNo); - productOffLine.setPartNo(workOrder.getPartNo()); - productOffLine.setPartName(workOrder.getPartNameRdd()); - productOffLine.setQty(qty); - productOffLine.setWorkCenterCode(workOrder.getWorkCenterCode()); - productOffLine.setErpWarehouse(workOrder.getErpWarehouse()); - //取物料信息中的类型 + productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + MesWorkCenterExt workCenterExt = getWorkCenterExtByWorkCenterCode(workOrder.getWorkCenterCode(), organizeCode); + productOffLine.setShiftCode(workCenterExt.getShiftCode()); + productOffLine.setLotNo(workCenterExt.getWorkTime()); + productOffLine.setIsWaterPurifier(MesPcnExtEnumUtil.IS_WATER_PURIFIER.NO.getValue()); + productOffLine.setOrganizeCode(organizeCode); + ConvertBean.serviceModelUpdate(productOffLine, userName); + productOffLineList.add(productOffLine); - if (null != partExt) { - productOffLine.setUnit(partExt.getUnit()); - productOffLine.setProdType(getProdType(partExt.getCategoryCode1())); - productOffLine.setProdType(Integer.parseInt(partExt.getCategoryCode1())); } - if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrder.getWorkOrderType()) { - productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue()); - } else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrder.getWorkOrderType() ) { - productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.STANDARD_SN.getValue()); - } else { - productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.ATTEMPT_SN.getValue()); - } - - productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); - MesWorkCenterExt workCenterExt = getWorkCenterExtByWorkCenterCode(workOrder.getWorkCenterCode(), organizeCode); - productOffLine.setShiftCode(workCenterExt.getShiftCode()); - productOffLine.setLotNo(workCenterExt.getWorkTime()); - productOffLine.setPartNo(partExt.getPartNo()); - productOffLine.setIsWaterPurifier(MesPcnExtEnumUtil.IS_WATER_PURIFIER.NO.getValue()); - productOffLine.setOrganizeCode(organizeCode); - ConvertBean.serviceModelUpdate(productOffLine, userName); - productOffLineRepository.insert(productOffLine); + productOffLineRepository.saveAll(productOffLineList); + + } private MesWorkCenterExt getWorkCenterExtByWorkCenterCode(String workCenterCode, String organizeCode) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java index fa32e23..ca65ccf 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/ProduceSnExtService.java @@ -658,7 +658,7 @@ public class ProduceSnExtService implements IProduceSnExtService { } @Override - public void doWorkOrderHandCreatePackage(Long id, String organizeCode, String userInfo) { + public List doWorkOrderHandCreatePackage(Long id, String organizeCode, String userInfo, Integer operateType, Integer packageQty) { MesWorkOrderExt workOrder = getWorkOrderByIdPackage(id, organizeCode); MesPartExt partDb = partExtService.getPartExt(workOrder.getOrganizeCode(), workOrder.getPartNo()); if (null == partDb) { @@ -730,7 +730,7 @@ public class ProduceSnExtService implements IProduceSnExtService { while (true) { count++; //工单数量 - Double qty = workOrder.getQty(); + Double qty = operateType == 1 ? workOrder.getQty() : packageQty; //包装数量 Double qty2 = partDb.getQty2(); @@ -785,7 +785,9 @@ public class ProduceSnExtService implements IProduceSnExtService { .setErrorDetail("工单[%s]批量生成包装条码时没有返回包装条码集合,操作失败", workOrder.getOrderNo()) .build(); } - workOrderAutoCreateSnService.insertPackage(resultBean.getResultList(), workOrder, partDb, codeType.getCodeType(), prodPackDb, num, userInfo); + if (operateType == 1) return workOrderAutoCreateSnService.insertPackage(resultBean.getResultList(), workOrder, partDb, codeType.getCodeType(), prodPackDb, num, userInfo); + else return workOrderAutoCreateSnService.insertSealedPackage(resultBean.getResultList(), workOrder, partDb, codeType.getCodeType(), prodPackDb, num, userInfo); + } else { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode()) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/SxWorkOrderAutoCreateSnService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/SxWorkOrderAutoCreateSnService.java index 62e3361..3d84bfe 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/SxWorkOrderAutoCreateSnService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/job/SxWorkOrderAutoCreateSnService.java @@ -242,7 +242,8 @@ public class SxWorkOrderAutoCreateSnService implements ISxWorkOrderAutoCreateSnS } @Override - public void insertPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb,Double num, String userInfo) { + public List insertPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb,Double num, String userInfo) { + List packageExtList = new ArrayList<>(); //物料设置的包装数量 Double qty2 = partDb.getQty2(); for (String o : packageNoList) { @@ -273,8 +274,49 @@ public class SxWorkOrderAutoCreateSnService implements ISxWorkOrderAutoCreateSnS ConvertBean.serviceModelInitialize(pack, userInfo); pack.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); new ConvertBeanExt(pack).convertBean(pack); - packageExtRepository.insert(pack); + packageExtList.add(packageExtRepository.insert(pack)); } + + return packageExtList; + } + + @Override + public List insertSealedPackage(List packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb, Double num, String userInfo) { + List packageExtList = new ArrayList<>(); + //物料设置的包装数量 + Double qty2 = partDb.getQty2(); + for (String o : packageNoList) { + MesPackageExt pack = new MesPackageExt(); + pack.setPackageNo(o); + pack.setWorkOrderNo(workOrder.getOrderNo()); + pack.setLastWorkOrderNo(workOrder.getOrderNo()); + pack.setPartNo(partDb.getPartNo()); + pack.setPartNameRdd(partDb.getPartName()); + if (o.equals(packageNoList.get(packageNoList.size()-1))) { + if (num!=0) { + pack.setQty(num); + } else { + pack.setQty(qty2); + } + } else { + pack.setQty(qty2); + } + pack.setPackSpec(prodPackDb.getPackSpec()); + pack.setPackSpecQty(qty2); + pack.setIsSealed(MesPcnExtEnumUtil.PACKAGE_IS_SEALED.SEALED.getValue()); + pack.setPackageLabelTemplate(prodPackDb.getPackLabelTemplate()); + pack.setUnit(partDb.getUnit()); + pack.setPrintStatus(MesPcnEnumUtil.PACKAGE_PRINT_STATUS.UNPRINTED.getValue()); + pack.setPackLevel(MesPcnEnumUtil.PACKAGE_PACKLEVEL.FIRST.getValue()); + pack.setWorkCenterCode(workOrder.getWorkCenterCode()); + pack.setOrganizeCode(workOrder.getOrganizeCode()); + ConvertBean.serviceModelInitialize(pack, userInfo); + pack.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); + new ConvertBeanExt(pack).convertBean(pack); + packageExtList.add(pack); + } + + return packageExtRepository.saveAll(packageExtList); } @Override diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/WorkOrderQueryDto.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/WorkOrderQueryDto.java index bf72e25..162b175 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/WorkOrderQueryDto.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/WorkOrderQueryDto.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiParam; import lombok.Data; +import java.util.List; + /** * @author yumingxing * @version 1.0 @@ -28,6 +30,9 @@ public class WorkOrderQueryDto { @ApiParam("工单状态") private Integer workOrderStatus; + @ApiParam("工单状态数组") + private Integer[] workOrderStatusArray; + @ApiParam("生产线代码") private String workCenterCode;