diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java index d63697e..4841f7c 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/MaterialReceiveActController.java @@ -555,7 +555,7 @@ public class MaterialReceiveActController { EventInfoUtil util = new EventInfoUtil(); makeEventInfo = util.makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK"); // 更新入库凭证 - SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoId, makeEventInfo); + SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoId, makeEventInfo, sign); /** * updateUndoIdByReceive和updateStockState都在MATERIALPACKINGHISTORY表插入了数据,导致有重复的入库记录 * 为了不影响后续通过undoId作为条件处理其它业务,新建方法updateMaterialPackingUndoIdByReceive,只更新undoId,不插入MATERIALPACKINGHISTORY表 diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java index d79365b..4ff10b3 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/QMSController.java @@ -5,6 +5,7 @@ import java.util.*; import java.util.stream.Collectors; import com.cim.idm.framework.template.workflow.BpelExecuter; +import com.cim.idm.framework.util.sys.SystemPropHelper; import com.cim.idm.model.ErpMessageLog; import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.AjaxResult; @@ -1342,6 +1343,106 @@ public class QMSController { bindMap.put("RESULTMESSAGE2", log.getReturnMsg2());// 返回结果的json IDMFrameServiceProxy.getSqlTemplate().update(sql, bindMap); } + + /** + * 2025-05-19 + * 接收物料组质检周期 + * @param in 物料组 + * @return 结果 + * @throws Exception + */ + // @Transactional(isolation= Isolation.READ_COMMITTED) + @Transactional + @RequestMapping(value = "/materialSpecIQCFlag", method = RequestMethod.POST) + public AjaxResult MaterialSpecIQCFlag(@RequestBody JSONArray in) throws Exception { + + AjaxResult result = new AjaxResult(); + EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("materialSpecIQCFlag", "IQC", "materialSpecIQCFlag"); + String siteName = "SDK"; + ErpMessageLog loginfo = new ErpMessageLog(); + loginfo.setServerName("QMSToWms"); + loginfo.setMessageId(""); + loginfo.setEventUser(makeEventInfo.getEventUser()); + loginfo.setId(UUID.randomUUID().toString()); + loginfo.setInterfaceTime(ConvertUtil.getCurrTime("yyyy-MM-dd HH:mm:ss")); + loginfo.setSendMsg(in.toJSONString()); + loginfo.setEventName(makeEventInfo.getEventName()); + Map updateMaterialSpecMap = new HashMap(); + Map insertBsMaterialSpecIqcFlagMap = new HashMap(); + Map updateBsMaterialSpecIqcFlagMap = new HashMap(); + if(!in.isEmpty()){ + String updateMaterialSpecSql = "UPDATE MATERIALSPEC SET IQCFLAG =:IQCFLAG WHERE MATERIALGROUP =:MATERIALGROUP AND SITENAME =:SITENAME"; + String insertBsMaterialSpecIqcFlagSql = "INSERT INTO BS_MATERIALSPECIQCFLAG (SITENAME, MATERIALGROUP, IQCFLAG, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER, LASTEVENTCOMMENT, INSPECTIONCYCLE, ORGNO) " + SystemPropHelper.CR + + "VALUES(:SITENAME, :MATERIALGROUP, :IQCFLAG, :LASTEVENTNAME, :LASTEVENTTIMEKEY, :LASTEVENTTIME,:LASTEVENTUSER, :LASTEVENTCOMMENT, :INSPECTIONCYCLE, :ORGNO)"; + String updateBsMaterialSpecIqcFlagSql = "UPDATE BS_MATERIALSPECIQCFLAG SET IQCFLAG = :IQCFLAG, INSPECTIONCYCLE =:INSPECTIONCYCLE, LASTEVENTNAME =:LASTEVENTNAME, LASTEVENTTIMEKEY =:LASTEVENTTIMEKEY, LASTEVENTTIME =:LASTEVENTTIME, LASTEVENTUSER =:LASTEVENTUSER, LASTEVENTCOMMENT =:LASTEVENTCOMMENT, ORGNO =:ORGNO WHERE SITENAME = :SITENAME AND MATERIALGROUP = :MATERIALGROUP"; + + for (int i = 0; i < in.size(); i++) { + JSONObject jb = in.getJSONObject(i); + String materialGroup = jb.get("materialGroup") == null ? "" : jb.get("materialGroup").toString();//物料组 + String iqcFlag = jb.get("iqcFlag") == null ? "" : jb.get("iqcFlag").toString();//是否质检 + String inspectionCycle = jb.get("inspectionCycle") == null ? "" : jb.get("inspectionCycle").toString();//检验周期 + String orgno = jb.get("orgno") == null ? "" : jb.get("orgno").toString();//组织 + if (StringUtils.isNotEmpty(materialGroup)) { + String selectBsMaterialSpecIqcFlagSql = " SELECT count(1) num FROM BS_MATERIALSPECIQCFLAG WHERE SITENAME = :SITENAME AND MATERIALGROUP = :MATERIALGROUP "; + Map bsMaterialSpecIqcFlagMap = new HashMap (); + bsMaterialSpecIqcFlagMap.put("SITENAME", siteName); + bsMaterialSpecIqcFlagMap.put("MATERIALGROUP", materialGroup); + List> bsMaterialSpecIqcFlagList = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectBsMaterialSpecIqcFlagSql, bsMaterialSpecIqcFlagMap); + String bsMaterialSpecIqcFlagNum = bsMaterialSpecIqcFlagList.get(0).get("NUM").toString(); + if("0".equals(bsMaterialSpecIqcFlagNum)) { + //insert BS_MATERIALSPECIQCFLAG + insertBsMaterialSpecIqcFlagMap.put("SITENAME", siteName); + insertBsMaterialSpecIqcFlagMap.put("MATERIALGROUP", materialGroup); + insertBsMaterialSpecIqcFlagMap.put("IQCFLAG", iqcFlag); + insertBsMaterialSpecIqcFlagMap.put("INSPECTIONCYCLE", inspectionCycle); + insertBsMaterialSpecIqcFlagMap.put("ORGNO", orgno); + insertBsMaterialSpecIqcFlagMap.put("LASTEVENTTIMEKEY", makeEventInfo.getEventTimeKey()); + insertBsMaterialSpecIqcFlagMap.put("LASTEVENTTIME", makeEventInfo.getEventTime()); + insertBsMaterialSpecIqcFlagMap.put("LASTEVENTUSER", makeEventInfo.getEventUser()); + insertBsMaterialSpecIqcFlagMap.put("LASTEVENTCOMMENT", makeEventInfo.getEventComment()); + insertBsMaterialSpecIqcFlagMap.put("LASTEVENTNAME", makeEventInfo.getEventName()); + IDMFrameServiceProxy.getSqlTemplate().update(insertBsMaterialSpecIqcFlagSql, insertBsMaterialSpecIqcFlagMap); + } + else { + //update BS_MATERIALSPECIQCFLAG + updateBsMaterialSpecIqcFlagMap.put("SITENAME", siteName); + updateBsMaterialSpecIqcFlagMap.put("MATERIALGROUP", materialGroup); + updateBsMaterialSpecIqcFlagMap.put("IQCFLAG", iqcFlag); + updateBsMaterialSpecIqcFlagMap.put("INSPECTIONCYCLE", inspectionCycle); + updateBsMaterialSpecIqcFlagMap.put("ORGNO", orgno); + updateBsMaterialSpecIqcFlagMap.put("LASTEVENTTIMEKEY", makeEventInfo.getEventTimeKey()); + updateBsMaterialSpecIqcFlagMap.put("LASTEVENTTIME", makeEventInfo.getEventTime()); + updateBsMaterialSpecIqcFlagMap.put("LASTEVENTUSER", makeEventInfo.getEventUser()); + updateBsMaterialSpecIqcFlagMap.put("LASTEVENTCOMMENT", makeEventInfo.getEventComment()); + updateBsMaterialSpecIqcFlagMap.put("LASTEVENTNAME", makeEventInfo.getEventName()); + IDMFrameServiceProxy.getSqlTemplate().update(updateBsMaterialSpecIqcFlagSql, updateBsMaterialSpecIqcFlagMap); + //update MATERIALSPEC + updateMaterialSpecMap.put("SITENAME",siteName); + updateMaterialSpecMap.put("MATERIALGROUP",materialGroup); + updateMaterialSpecMap.put("IQCFLAG",iqcFlag); + IDMFrameServiceProxy.getSqlTemplate().update(updateMaterialSpecSql, updateMaterialSpecMap); + } + }else { + result = AjaxResult.me().setErrorCode(400).setMessage("materialGroup,iqcFlag,inspectionCycle属于必传字段"); + loginfo.setResultCode("E"); + loginfo.setReturnMsg(JSONObject.toJSONString(result)); + saveMessageLog(loginfo); + return result; + } + } + result = AjaxResult.me().setSuccess(true).setMessage("接收物料组质检周期成功"); + loginfo.setResultCode("success"); + loginfo.setReturnMsg(JSONObject.toJSONString(result)); + + }else { + result = AjaxResult.me().setErrorCode(400).setMessage("未传入物料组质检周期信息"); + loginfo.setResultCode("E"); + loginfo.setReturnMsg(JSONObject.toJSONString(result)); + } + // 消息保存日志,erp推送wms的数据写入表BS_ERPMESSAGELOG中 + saveMessageLog(loginfo); + return result; + } } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java index f6f994e..c933be2 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/SAPToWMSController.java @@ -95,9 +95,9 @@ public class SAPToWMSController { ArrayList> data = request.getBODY(); // 主表 - String insertSql="INSERT INTO MATERIALSPEC (sitename, materialspecname, materialgroup, materialgroupdescription, materialunit, materialunitdesc, deliverycycle, minorderqty, phase, materialtype, mstae, oldmaterialspecname, highvalueflag, commonmaterialflag, purchasetype, width, financialtype, createtime, createuser, lasteventtime, lasteventuser, lasteventtimekey, lasteventname, lasteventcomment,desc_en,IS_CON_TEMP ,MATURATIONTIME ,MATURATIONFLAG ,DEGREE,EXPIRATION_RULES, ZTURENAME, ZMDQ, IS_CON_TEMP_T, MATURATIONTIME_T, MATURATIONFLAG_T, EXPIRATIONDATEFLAG, EXPIRATIONDAY) " + SystemPropHelper.CR + - "VALUES(:sitename, :materialspecname, :materialgroup, :materialgroupdescription, :materialunit, :materialunitdesc,:deliverycycle, :minorderqty, :phase, :materialtype, :mstae, :oldmaterialspecname, :highvalueflag, :commonmaterialflag, :purchasetype, :width, :financialtype, :createtime, :createuser, :lasteventtime, :lasteventuser, :lasteventtimekey, :lasteventname, :lasteventcomment,:desc_en,:IS_CON_TEMP ,:MATURATIONTIME ,:MATURATIONFLAG ,:DEGREE,:EXPIRATION_RULES, :zturename, :zmdq, :IS_CON_TEMP_T, :MATURATIONTIME_T, :MATURATIONFLAG_T, :EXPIRATIONDATEFLAG, :EXPIRATIONDAY)"; - String updateSql = "UPDATE MATERIALSPEC SET materialgroup = :materialgroup,desc_en=:desc_en,IS_CON_TEMP=:IS_CON_TEMP ,MATURATIONTIME=:MATURATIONTIME ,MATURATIONFLAG=:MATURATIONFLAG ,DEGREE=:DEGREE,EXPIRATION_RULES=:EXPIRATION_RULES, materialgroupdescription = :materialgroupdescription, materialunit = :materialunit, materialunitdesc = :materialunitdesc, deliverycycle = :deliverycycle, minorderqty = :minorderqty, phase = :phase, materialtype = :materialtype, mstae = :mstae, oldmaterialspecname = :oldmaterialspecname, highvalueflag = highvalueflag, commonmaterialflag = :commonmaterialflag, purchasetype = :purchasetype, width = :width, financialtype = :financialtype, createtime = :createtime, createuser = :createuser, lasteventtime = :lasteventtime, lasteventuser = :lasteventuser, lasteventtimekey = :lasteventtimekey, lasteventname = :lasteventname, lasteventcomment = :lasteventcomment, zturename = :zturename, zmdq = :zmdq, IS_CON_TEMP_T = :IS_CON_TEMP_T, MATURATIONTIME_T = :MATURATIONTIME_T, MATURATIONFLAG_T = :MATURATIONFLAG_T, EXPIRATIONDATEFLAG = :EXPIRATIONDATEFLAG, EXPIRATIONDAY = :EXPIRATIONDAY where materialspecname = :materialspecname and sitename = :sitename"; + String insertSql="INSERT INTO MATERIALSPEC (sitename, materialspecname, materialgroup, materialgroupdescription, materialunit, materialunitdesc, deliverycycle, minorderqty, phase, materialtype, mstae, oldmaterialspecname, highvalueflag, commonmaterialflag, purchasetype, width, financialtype, createtime, createuser, lasteventtime, lasteventuser, lasteventtimekey, lasteventname, lasteventcomment,desc_en,IS_CON_TEMP ,MATURATIONTIME ,MATURATIONFLAG ,DEGREE,EXPIRATION_RULES, ZTURENAME, ZMDQ, IS_CON_TEMP_T, MATURATIONTIME_T, MATURATIONFLAG_T, EXPIRATIONDATEFLAG, EXPIRATIONDAY, IS_BATCH, IQCFLAG) " + SystemPropHelper.CR + + "VALUES(:sitename, :materialspecname, :materialgroup, :materialgroupdescription, :materialunit, :materialunitdesc,:deliverycycle, :minorderqty, :phase, :materialtype, :mstae, :oldmaterialspecname, :highvalueflag, :commonmaterialflag, :purchasetype, :width, :financialtype, :createtime, :createuser, :lasteventtime, :lasteventuser, :lasteventtimekey, :lasteventname, :lasteventcomment,:desc_en,:IS_CON_TEMP ,:MATURATIONTIME ,:MATURATIONFLAG ,:DEGREE,:EXPIRATION_RULES, :zturename, :zmdq, :IS_CON_TEMP_T, :MATURATIONTIME_T, :MATURATIONFLAG_T, :EXPIRATIONDATEFLAG, :EXPIRATIONDAY, :IS_BATCH, :IQCFLAG)"; + String updateSql = "UPDATE MATERIALSPEC SET materialgroup = :materialgroup,desc_en=:desc_en,IS_CON_TEMP=:IS_CON_TEMP ,MATURATIONTIME=:MATURATIONTIME ,MATURATIONFLAG=:MATURATIONFLAG ,DEGREE=:DEGREE,EXPIRATION_RULES=:EXPIRATION_RULES, materialgroupdescription = :materialgroupdescription, materialunit = :materialunit, materialunitdesc = :materialunitdesc, deliverycycle = :deliverycycle, minorderqty = :minorderqty, phase = :phase, materialtype = :materialtype, mstae = :mstae, oldmaterialspecname = :oldmaterialspecname, highvalueflag = highvalueflag, commonmaterialflag = :commonmaterialflag, purchasetype = :purchasetype, width = :width, financialtype = :financialtype, createtime = :createtime, createuser = :createuser, lasteventtime = :lasteventtime, lasteventuser = :lasteventuser, lasteventtimekey = :lasteventtimekey, lasteventname = :lasteventname, lasteventcomment = :lasteventcomment, zturename = :zturename, zmdq = :zmdq, IS_CON_TEMP_T = :IS_CON_TEMP_T, MATURATIONTIME_T = :MATURATIONTIME_T, MATURATIONFLAG_T = :MATURATIONFLAG_T, EXPIRATIONDATEFLAG = :EXPIRATIONDATEFLAG, EXPIRATIONDAY = :EXPIRATIONDAY, IS_BATCH =:IS_BATCH, IQCFLAG =:IQCFLAG where materialspecname = :materialspecname and sitename = :sitename"; // 附加单位 String insertMarmSql = "insert into BS_MATERIALUNIT (materialspecname, additionalunit, modulecule, denominator) " + "VALUES(:materialspecname, :additionalunit, :modulecule, :denominator)"; @@ -153,6 +153,8 @@ public class SAPToWMSController { String ZZBZQ = MapUtils.getString(materialSpec, "ZZBZQ");//保质期 String EXPIRATIONDATEFLAG = "";//是否启用保质期管理 String EXPIRATIONDAY = "";//保质期 + String IS_BATCH = "";//启用批次管理 + String IQCFLAG = "";//是否质检 // 预留字段 ZRSV01 = MapUtils.getString(materialSpec, "ZRSV01") != null ? MapUtils.getString(materialSpec, "ZRSV01") : ""; ZRSV02 = MapUtils.getString(materialSpec, "ZRSV02") != null ? MapUtils.getString(materialSpec, "ZRSV02") : ""; @@ -258,6 +260,34 @@ public class SAPToWMSController { //2025-04-24 添加缺少字段 map.put("EXPIRATIONDAY", EXPIRATIONDAY);//保质期 map.put("EXPIRATIONDATEFLAG", EXPIRATIONDATEFLAG);//是否启用保质期管理 + /** + * 2025-05-19 + * 增加物料是否批次管理按以下规则: + * 1.Z008所有物料;Z001下105开头的不启用批次,其他所有料号启用批次管理 + */ + if(mtart.equals("Z008") || (mtart.equals("Z001") && matkl.startsWith("105"))){ + IS_BATCH = "N"; + }else { + IS_BATCH = "Y"; + } + map.put("IS_BATCH", IS_BATCH);//启用批次管理 + + /** + * 2025-05-19 + * 增加物料是否质检 + * 1.按照QMS提供对应关系维护到基础表(新增),料号下发时取值 + */ + String selectIQCFlagSql = " SELECT SITENAME, MATERIALGROUP, IQCFLAG FROM BS_MATERIALSPECIQCFLAG WHERE SITENAME =:SITENAME AND MATERIALGROUP =:MATERIALGROUP "; + Map IQCFlagMap = new HashMap (); + IQCFlagMap.put("MATERIALGROUP", matkl); + IQCFlagMap.put("SITENAME", materialSpecSiteName); + List> selectIQCFlagList = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectIQCFlagSql, IQCFlagMap); + if(null != selectIQCFlagList && selectIQCFlagList.size() > 0){ + IQCFLAG = selectIQCFlagList.get(0).get("IQCFLAG") == null ? "N" : selectIQCFlagList.get(0).get("IQCFLAG").toString(); + }else { + IQCFLAG = "N"; + } + map.put("IQCFLAG", IQCFLAG);//是否质检 if("X".equals(lvorm)) { //IDMFrameServiceProxy.getSqlTemplate().update(insertHistorySql, map); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java index 18bed43..8689c77 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ProductIntoServiceImpl.java @@ -304,6 +304,7 @@ public class ProductIntoServiceImpl implements FGStockInService { Map stringObjectMap = MapUtils.entityToMap(packingList.get(i)); CreateInfo packingList1 = new CreateInfo(); packingList1.setSiteName("SDK"); + packingList1.setMaterialPackingType(packingList.get(i).getMaterialPackingType()); packingList1.setMaterialPackingName(packingList.get(i).getMaterialPackingName()); packingList1.setUserColumns(stringObjectMap); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SDKMaterialPackingServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SDKMaterialPackingServiceImpl.java index 764b325..e0b3bd8 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SDKMaterialPackingServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/SDKMaterialPackingServiceImpl.java @@ -389,7 +389,7 @@ public class SDKMaterialPackingServiceImpl extends CommonServiceDAO hashMap = new HashMap (); hashMap.put("RECEIVEREQUESTNAME", receiveRequestName); @@ -398,6 +398,9 @@ public class SDKMaterialPackingServiceImpl extends CommonServiceDAO bindMap = new HashMap(); bindMap.put("unDoID",UNDOID); + if ("app".equals(sign)) { + bindMap.put("shipRequestName", ""); + } setEventInfo.setUserColumns(bindMap); MaterialPackingKey materialPackingKey = new MaterialPackingKey(map.get("SITENAME").toString(), map.get("MATERIALPACKINGNAME").toString()); MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, eventInfo, setEventInfo);