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 74fc38e..6cf5e29 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 @@ -71,7 +71,11 @@ public class SAPToWMSController { String ZRSV08 = ""; String ZRSV09 = ""; String ZRSV10 = ""; - + /** + * 2025-04-25 + * 设置MATERIALSPEC的SITENAME值为SDK + */ + String materialSpecSiteName = "SDK"; // 物料主数据 @RequestMapping(value = "/materialspec", method = RequestMethod.POST) public WMSToSAPReturn GetMaterialSpec(HttpServletRequest httpRequest, @RequestBody SAPToWMSRequest request) { @@ -84,9 +88,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) " + 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)"; - 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 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) " + 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 insertMarmSql = "insert into BS_MATERIALUNIT (materialspecname, additionalunit, modulecule, denominator) " + "VALUES(:materialspecname, :additionalunit, :modulecule, :denominator)"; @@ -138,6 +142,10 @@ public class SAPToWMSController { String ZDAY = MapUtils.getString(materialSpec, "ZDAY");//仓库熟化天数 String ZRAUBE = MapUtils.getString(materialSpec, "ZRAUBE");//存储条件 String ZBZQTYPE = MapUtils.getString(materialSpec, "ZBZQTYPE");//保质期类型 + //2025-04-24 增加字段 ZZBZQ保质期 + String ZZBZQ = MapUtils.getString(materialSpec, "ZZBZQ");//保质期 + String EXPIRATIONDATEFLAG = "";//是否启用保质期管理 + String EXPIRATIONDAY = "";//保质期 // 预留字段 ZRSV01 = MapUtils.getString(materialSpec, "ZRSV01") != null ? MapUtils.getString(materialSpec, "ZRSV01") : ""; ZRSV02 = MapUtils.getString(materialSpec, "ZRSV02") != null ? MapUtils.getString(materialSpec, "ZRSV02") : ""; @@ -156,7 +164,7 @@ public class SAPToWMSController { Timestamp currentTimestamp = TimeStampUtil.getCurrentTimestamp(); HashMap map = new HashMap(); - map.put("sitename", System.getProperty("company")); + map.put("sitename", materialSpecSiteName); map.put("materialspecname", matnr); map.put("materialgroup", matkl); map.put("materialgroupdescription", wgbez); @@ -196,7 +204,18 @@ public class SAPToWMSController { MATURATIONFLAG="N"; }*/ - + /** + * 2024-04-24 + * 如果ZZBZQ的值为空或0时EXPIRATIONDATEFLAG=N + * 如果ZZBZQ的值非空且非0时EXPIRATIONDATEFLAG=Y EXPIRATIONDAY=ZZBZQ + */ + if(StringUtils.isEmpty(ZZBZQ) || "0".equals(ZZBZQ)){ + EXPIRATIONDATEFLAG = "N"; + } + if(StringUtils.isNotEmpty(ZZBZQ) && !"0".equals(ZZBZQ)){ + EXPIRATIONDATEFLAG = "Y"; + EXPIRATIONDAY = ZZBZQ; + } map.put("IS_CON_TEMP", ZRAUBE); map.put("IS_CON_TEMP_T", ZRAUBE); map.put("MATURATIONTIME", ZDAY); @@ -229,20 +248,28 @@ public class SAPToWMSController { String zmdq = MapUtils.getString(materialSpec, "ZMDQ"); // 装车最小装载量 map.put("zturename", zturename); map.put("zmdq", zmdq); - + //2025-04-24 添加缺少字段 + map.put("EXPIRATIONDAY", EXPIRATIONDAY);//保质期 + map.put("EXPIRATIONDATEFLAG", EXPIRATIONDATEFLAG);//是否启用保质期管理 if("X".equals(lvorm)) { //IDMFrameServiceProxy.getSqlTemplate().update(insertHistorySql, map); String sql="DELETE FROM materialspec WHERE materialspecname=? AND sitename=?"; + /* + 2025-04-25 + sitename = SDK Object[] obj=new Object[] {matnr,System.getProperty("company")}; + */ + Object[] obj=new Object[] {matnr,materialSpecSiteName}; + IDMFrameServiceProxy.getSqlTemplate().update(sql, obj); } else { String selectSql="SELECT count(1) num FROM materialspec WHERE materialspecname = :MATERIALSPECNAME AND sitename = :SITENAME"; - Object[] selectObj=new Object[] {matnr,System.getProperty("company")}; + Object[] selectObj=new Object[] {matnr,materialSpecSiteName}; Map hashMap = new HashMap (); hashMap.put("MATERIALSPECNAME", matnr); - hashMap.put("SITENAME", System.getProperty("company")); + hashMap.put("SITENAME", materialSpecSiteName); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap); String string = queryForList.get(0).get("NUM").toString(); if("0".equals(string)) { diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java index 61d2718..820162d 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/MaterialShipServiceImpl.java @@ -245,6 +245,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { for (int i = 0; i < boxList.size(); i++) { LinkedHashMap boxlinkedHashMap = boxList.get(i); String boxShipRequestName = (String) boxlinkedHashMap.get("SHIPREQUESTNAME"); + String boxShipRequestDetailName = (String) boxlinkedHashMap.get("SHIPREQUESTDETAILNAME"); String materialSpecName = (String) boxlinkedHashMap.get("MATERIALSPECNAME"); String sdkId = (String) boxlinkedHashMap.get("SDK_ID"); String phase = (String) boxlinkedHashMap.get("PHASE"); @@ -261,10 +262,11 @@ public class MaterialShipServiceImpl implements IMaterialShipService { "AND M.MATERIALSPECNAME = :MATERIALSPECNAME AND (M.SDK_ID = :SDK_ID OR :SDK_ID IS NULL) AND (M.PHASE = :PHASE OR :PHASE IS NULL)\n" + "UNION \n" + "SELECT T.RECEIVEREQUESTNAME SHIPREQUESTNAME,T.RECEIVEREQUESTDETAILNAME SHIPREQUESTDETAILNAME , T.REQUESTQUANTITY - T.RECEIVEDQUANTITY MINQTY \n" + - "FROM MATERIALRECEIVEREQUESTDETAIL T WHERE T.RECEIVEREQUESTNAME = :SHIPREQUESTNAME AND T.REQUESTQUANTITY - T.RECEIVEDQUANTITY > 0 \n" + + "FROM MATERIALRECEIVEREQUESTDETAIL T WHERE T.RECEIVEREQUESTNAME = :SHIPREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :SHIPREQUESTDETAILNAME AND T.REQUESTQUANTITY - T.RECEIVEDQUANTITY > 0 \n" + "AND T.MATERIALSPECNAME = :MATERIALSPECNAME AND (T.SDK_ID = :SDK_ID OR :SDK_ID IS NULL) AND (T.PHASE = :PHASE OR :PHASE IS NULL)"; Map bindMap1 = new HashMap(); - bindMap1.put("SHIPREQUESTNAME",shipRequestName); + bindMap1.put("SHIPREQUESTNAME",boxShipRequestName); + bindMap1.put("SHIPREQUESTDETAILNAME",boxShipRequestDetailName); bindMap1.put("MATERIALSPECNAME",materialSpecName); bindMap1.put("SDK_ID",sdkId); bindMap1.put("PHASE",phase); @@ -331,6 +333,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { " AND A.OQARESULTSTATE <> 'PREOQA'\r\n" + " AND to_char(A.EXPIRINGDATE, 'yyyymmdd') >= to_char(SYSDATE, 'yyyymmdd')\r\n" + " ORDER BY to_char(A.RECEIVETIME, 'yyyymmdd') "; + bindMap1.put("SHIPREQUESTDETAILNAME",shipRequestDetailName); List> list2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(boxListSql, bindMap1); if(null != list2 && list2.size() > 0){ for (Map map2 : list2) { @@ -648,6 +651,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { } } } + //备份过账条码表的信息,并删除 String bfSql = "INSERT\r\n" + " INTO\r\n" + @@ -664,8 +668,8 @@ public class MaterialShipServiceImpl implements IMaterialShipService { " MATERIALPACKINGSUB M\r\n" + "WHERE\r\n" + " M.RECEIVEREQUESTNAME = :SHIPREQUESTNAME"; - String scSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME"; IDMFrameServiceProxy.getSqlTemplate().update(bfSql, hashMap); + String scSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME"; IDMFrameServiceProxy.getSqlTemplate().update(scSql, hashMap); //循环过账批次 @@ -746,6 +750,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService { // MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK",materialPackingName); // arrayList.add(materialPackingKey); } + //判断会有多少个仓库发货,不同仓库需要分开走账 StringBuffer cklx = new StringBuffer(); cklx.append("SELECT DISTINCT m.ERPLOCATION FROM MATERIALPACKING m WHERE m.MATERIALPACKINGNAME IN "); @@ -929,6 +934,8 @@ public class MaterialShipServiceImpl implements IMaterialShipService { default : break; } + String deleteSql = "DELETE FROM MATERIALPACKINGSUB WHERE RECEIVEREQUESTNAME = :SHIPREQUESTNAME"; + IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap); return AjaxResult.me().setSuccess(true).setErrorCode(200); }