diff --git a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java index 1e11551..c2e3622 100644 --- a/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java +++ b/zi-wms-inf/src/main/java/com/cim/idm/service/impl/ToSAPServiceImpl.java @@ -4310,7 +4310,8 @@ public class ToSAPServiceImpl { " T.MATERIALSPECNAME,T.UNIT,PACKINGGRADE "; Map hashMap = new HashMap(); hashMap.put("SITENAME", siteName); - hashMap.put("SHIPREQUESTNAME", shipRequestName); +// hashMap.put("SHIPREQUESTNAME", shipRequestName); + hashMap.put("SHIPREQUESTNAME", opCode); List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql.toString(), hashMap); //根据不同的类型进行处理 String makeReturnStockIn = makeReturnStockIn(queryForList, eventUser); diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/NoInvoiceManagerContoller.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/NoInvoiceManagerContoller.java new file mode 100644 index 0000000..2c7ebc0 --- /dev/null +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/NoInvoiceManagerContoller.java @@ -0,0 +1,392 @@ +package com.cim.idm.controller; + +import java.text.ParseException; + +import java.util.ArrayList; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import com.cim.idm.exception.GlobalException; +import com.cim.idm.model.MaterialReceiveRequest; +import com.cim.idm.model.ShelfDto; +import com.cim.idm.utils.AjaxResult; +import com.cim.idm.utils.CommonUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.cim.idm.framework.IDMFrameServiceProxy; + +import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking; + +import io.swagger.annotations.Api; + + +@Api("已批次管理入库") +@RestController +@RequestMapping("/api/NoInvoice") +@EnableAutoConfiguration +public class NoInvoiceManagerContoller { + +// @Autowired +// NoInvoiceManagerServiceImpl NoInvoiceManagerServiceImpl; + + CommonUtils untils=new CommonUtils(); + /** + * 获取其他待入集合 + * @param in + * @return + */ + @RequestMapping(value = "/getBarCode", method = RequestMethod.POST) + public AjaxResult getQTRList(@RequestBody JSONObject in ){ + MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class); + String materialPackingName = m.getMaterialPackingName(); + String locationName = m.getLocationName(); + String erpFactory = m.getErpFactory(); + String erpLocation = m.getErpLocation(); + String createUser = m.getCreateUser(); + String[] split = materialPackingName.split("\\|"); + // 470110856|1|C|75mm*1000m|SHBP01JT1202305240009|20230524|11|75 + String materialSpecName = split[0]; + String phase = split[2]; + String specName = split[3]; + String charge = split[4]; + String makeDate = split[5]; + String unit = split[6]; + String qty = split[7]; + //恒温恒湿管控 + + if(!(untils.JudgeMentERPLocationAndMaterialSpec(erpLocation,materialSpecName))) + { + throw new GlobalException("物料为:"+materialSpecName+" 仓库为:"+erpLocation+" ,不符合恒温恒湿管理"); + } + Map expridate = getExpridate(makeDate, materialSpecName); + String sql = "SELECT STOCKSTATE, MAKEDATE, EXPIRINGDATE, CHARGE, MATERIALQUANTITY, ERPFACTORY,ERPLOCATION,SUPPLIERNAME,LOCATIONNAME,SDK_ID,PHASE,MATERIALSPECNAME FROM MATERIALPACKING WHERE ((MATERIALSPECNAME = :MATERIALSPECNAME AND CHARGE = :CHARGE) OR MATERIALPACKINGNAME = :MATERIALPACKINGNAME) "; + Map hashMap = new HashMap (); + hashMap.put("MATERIALSPECNAME", materialSpecName); + hashMap.put("CHARGE", charge); + hashMap.put("MATERIALPACKINGNAME", materialPackingName); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); + if (queryForList == null || queryForList.size() < 1) { + throw new GlobalException("录入批次系统未在系统流转"); + } + if ("Stocked".equals(queryForList.get(0).get("STOCKSTATE").toString())) { + throw new GlobalException("录入批次在库"); + } + String packingGrade = queryForList.get(0).get("OQARESULT") == null ? "" : queryForList.get(0).get("OQARESULT").toString(); + Boolean judgeMtaerialStateWithERPLocation = untils.JudgeMtaerialStateWithERPLocation(erpLocation, packingGrade); + if (!judgeMtaerialStateWithERPLocation) { + throw new GlobalException("仓库类型和物料品质等级不一致"); + } + List> arrayList = new ArrayList> (); + Map map = new HashMap (); + map.put("MATERIALPACKINGNAME", materialPackingName); + map.put("MATERIALSPECNAME", queryForList.get(0).get("MATERIALSPECNAME") == null ? "" : queryForList.get(0).get("MATERIALSPECNAME") .toString()); + map.put("CHARGE", queryForList.get(0).get("CHARGE") == null ? "" : queryForList.get(0).get("CHARGE") .toString()); + map.put("PHASE", phase); + map.put("MATERIALQUANTITY", queryForList.get(0).get("MATERIALQUANTITY") == null ? "" : queryForList.get(0).get("MATERIALQUANTITY") .toString()); + map.put("SPECNAME", specName); + map.put("LOCATIONNAME", locationName); + map.put("ERPFACTORY", erpFactory); + map.put("ERPLOCATION", erpLocation); + map.put("SDK_ID", queryForList.get(0).get("SDK_ID") == null ? "" : queryForList.get(0).get("SDK_ID") .toString()); +// if (expridate != null) { +// map.put("MAKEDATE", makeDate); +// map.put("EXPRIDATE", expridate); +// } + map.put("MAKEDATE", queryForList.get(0).get("MAKEDATE") == null ? "" : queryForList.get(0).get("MAKEDATE") .toString()); + map.put("EXPIRINGDATE", queryForList.get(0).get("EXPIRINGDATE") == null ? "" : queryForList.get(0).get("EXPIRINGDATE") .toString()); + + arrayList.add(map); + return AjaxResult.me().setResultObj(arrayList); + } + + + /** + * 获取其他待出接口 + * @param in + * @return + */ + @RequestMapping(value = "/getQTCList", method = RequestMethod.POST) + public AjaxResult getQTCList(@RequestBody JSONObject in ){ + MaterialPacking materialPacking = JSON.toJavaObject(in, MaterialPacking.class); + + String sql = "SELECT\r\n" + + " M.*,\r\n" + + " CASE\r\n" + + " WHEN M.MATURATIONINTIME IS NOT NULL THEN SYSDATE - M.MATURATIONINTIME - m2.MATURATIONTIME\r\n" + + " ELSE 1\r\n" + + " END FLAG\r\n" + + "FROM\r\n" + + " MATERIALPACKING M\r\n" + + "LEFT JOIN MATERIALSPEC m2 ON\r\n" + + " M.MATERIALSPECNAME = m2.MATERIALSPECNAME\r\n" + + "WHERE\r\n" + + " M.STOCKSTATE = 'Stocked'\r\n" + + " AND M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME "; + + Map bindMap = new HashMap(); + bindMap.put("MATERIALPACKINGNAME", materialPacking.getMaterialPackingName()); + List> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap); + + if(Objects.isNull(list) || list.isEmpty()) { + throw new GlobalException("未找到对应的数据!"); + } + + if(!Objects.isNull(list) && !list.isEmpty()) { + String string = list.get(0).get("FLAG").toString(); + float parseFloat = Float.parseFloat(string); + float abs = Math.abs(parseFloat); + if (parseFloat < 0) { + throw new GlobalException("还差" + abs + "天才能熟化出库!"); + } + } + return AjaxResult.me().setResultObj(list); + + } + + + /** + * 其他出提交 + * @param in + * @return + */ + @RequestMapping(value = "/QTCCommit", method = RequestMethod.POST) + public AjaxResult QTCCommit(@RequestBody JSONObject in ){ + // List object = (List) in.get("boxList"); + MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class); + List boxList = sl.getBoxList(); + String user2 = sl.getUser(); + String siteName = sl.getSiteName(); + String user = in.get("user").toString(); + String commitDatesString = sl.getCommitDate(); + String commitDate = commitDatesString + " 00:00:00"; + String opCode = sl.getOpCode(); + // MaterialPacking selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(new MaterialPackingKey("SDK", "311110026|1|C|75mm*1000m|3111100268001421|20230524|11|75")); + // ArrayList arrayList = new ArrayList<>(); + // arrayList.add(selectByKey); +// NoInvoiceManagerServiceImpl.QTC(boxList,user,siteName,commitDate,opCode); + + return AjaxResult.me().setResultObj(null); + + } + + @RequestMapping(value = "/QTRCommit", method = RequestMethod.POST) + public AjaxResult QTCRommit(@RequestBody JSONObject in ) throws ParseException{ + MaterialReceiveRequest sl = JSON.toJavaObject(in, MaterialReceiveRequest.class); + String commitDateString = sl.getCommitDate(); + List boxList = sl.getBoxList(); + String user2 = sl.getUser(); + String opCode = sl.getOpCode(); + // ArrayList arrayList = new ArrayList<>(); + // arrayList.add(selectByKey); + + String commitDate = commitDateString + " 00:00:00"; + +// NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode); + + return AjaxResult.me().setResultObj(null); + + } + + @RequestMapping(value = "/getChangeLocationBarCode", method = RequestMethod.POST) + public AjaxResult getChangeLocationBarCode(@RequestBody JSONObject in ){ + MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class); + String materialPackingName = m.getMaterialPackingName(); + String locationName = m.getLocationName(); + String erpFactory = m.getErpFactory(); + String erpLocation = m.getErpLocation(); + String supplierCharge = m.getSupplierCharge(); + String createUser = m.getCreateUser(); + String[] split = materialPackingName.split("\\|"); + // 470110856|1|C|75mm*1000m|SHBP01JT1202305240009|20230524|11|75 + String materialSpecName = split[0]; + // String phase = split[2]; + String specName = split[3]; + // String charge = split[4]; + // String makeDate = split[5]; + // String unit = split[6]; + // String qty = split[7]; + // String materialSpecName=m.getMaterialSpecName(); + + if (erpFactory == null || "".equals(erpFactory)) { + throw new GlobalException("组织不能为空!"); + } + if (erpLocation == null || "".equals(erpLocation)) { + throw new GlobalException("仓库不能为空!"); + } + if (locationName == null || "".equals(locationName)) { + throw new GlobalException("货位不能为空!"); + } + //判断货位是否在同一个ERP组织下 + String sql = "SELECT PACKINGGRADE,CHARGE, MATERIALQUANTITY, ERPFACTORY,ERPLOCATION,SUPPLIERNAME,LOCATIONNAME,SDK_ID,PHASE,MATERIALSPECNAME FROM MATERIALPACKING M WHERE M.STOCKSTATE = 'Stocked' AND M.MATERIALPACKINGNAME = :MATERIALPACKINGNAME "; + Map bindMap = new HashMap(); + bindMap.put("MATERIALPACKINGNAME", materialPackingName); + List> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap); + if(Objects.isNull(list) || list.isEmpty()) { + throw new GlobalException("未找到对应的数据!该标签为空或者不为在库状态"); + } + // 良品与不良品与仓校验 + String packingGrade = list.get(0).get("PACKINGGRADE") == null ? "" : list.get(0).get("PACKINGGRADE").toString(); + Boolean judgeMtaerialStateWithERPLocation = untils.JudgeMtaerialStateWithERPLocation(erpLocation, packingGrade); + if (!judgeMtaerialStateWithERPLocation) { + throw new GlobalException("仓库类型和物料品质等级不一致"); + } + if ("101".equals(erpFactory) || "102".equals(erpFactory)) { + if ("OK".equals(packingGrade)) { + //恒温恒湿管控 + if (!(untils.JudgeMentERPLocationAndMaterialSpec(erpLocation, materialSpecName))) { + throw new GlobalException("物料为:" + materialSpecName + " 仓库为:" + erpLocation + " ,不符合恒温恒湿管理"); + } + } + } + //判断是否需要绑定供应商 + String SupSql="SELECT ASSFLAG FROM SUPPLIER s WHERE SUPPLIERNO =:SUPPLIERNO"; + Map bindMap2 = new HashMap(); + bindMap2.put("SUPPLIERNO", list.get(0).get("SUPPLIERNAME") == null ? "" : list.get(0).get("SUPPLIERNAME").toString()); + List> list2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(SupSql, bindMap2); + + if (list2 == null || list2.size() < 1) { + + } else { + String flag = list2.get(0).get("ASSFLAG") == null ? "N" : list2.get(0).get("ASSFLAG").toString(); + if("Y".equals(flag) && ("".equals(supplierCharge) || supplierCharge == null )) + { + throw new GlobalException("需要绑定供应商批次!"); + } + } + + if (!erpFactory.equals(list.get(0).get("ERPFACTORY").toString()) || !erpLocation.equals(list.get(0).get("ERPLOCATION").toString()) ) { + throw new GlobalException("目标仓库与组织与原库存不一致!组织:"+erpFactory+"库存组织:"+list.get(0).get("ERPFACTORY").toString()+"仓库:"+erpLocation+"目标仓库:"+list.get(0).get("ERPLOCATION").toString()); + } + String preLocation = list.get(0).get("LOCATIONNAME") == null ? "" : list.get(0).get("LOCATIONNAME").toString(); + if (list.get(0).get("LOCATIONNAME") != null && locationName.equals(preLocation) ) { + throw new GlobalException("货位一致不需要调整"); + } + List> arrayList = new ArrayList> (); + Map map = new HashMap (); + map.put("MATERIALPACKINGNAME", materialPackingName); + map.put("MATERIALSPECNAME", list.get(0).get("MATERIALSPECNAME")); + map.put("CHARGE", list.get(0).get("CHARGE")); + map.put("PHASE", list.get(0).get("PHASE")); + map.put("SUPPLIERCHARGE", supplierCharge); + map.put("MATERIALQUANTITY", list.get(0).get("MATERIALQUANTITY")); + map.put("SPECNAME", specName); + map.put("LOCATIONNAME", locationName); + map.put("PRELOCATIONNAME", preLocation); + map.put("ERPFACTORY", erpFactory); + map.put("ERPLOCATION", erpLocation); + // map.put("SUPPLIERCHARGE", supplierCharge); + map.put("SDK_ID", list.get(0).get("SDK_ID") == null ? "" : list.get(0).get("SDK_ID").toString()); + arrayList.add(map); + return AjaxResult.me().setResultObj(arrayList); + } + + @RequestMapping(value = "/getSupplierChargeByPakingname", method = RequestMethod.POST) + public AjaxResult getSupplierChargeByPakingname(@RequestBody JSONObject in ){ + MaterialPacking m = JSON.toJavaObject(in, MaterialPacking.class); + String materialPackingName = m.getMaterialPackingName(); + String siteName = "SDK"; + String sql = "SELECT\n" + + "\tm.MATERIALPACKINGNAME ,\n" + + "\tm.SUPPLIERCHARGE\n" + + "FROM\n" + + "\tMATERIALPACKING m\n" + + "WHERE\n" + + "\tm.MATERIALPACKINGNAME = :MATERIALPACKINGNAME\n" + + "\tAND m.SITENAME = :SITENAME"; + Map bindMap = new HashMap(); + bindMap.put("MATERIALPACKINGNAME", materialPackingName); + bindMap.put("SITENAME", siteName); + List> list = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, bindMap); + String supplierCharge = ""; + if(list != null && list.size() > 0){ + for(Map map : list) { + supplierCharge = map.get("SUPPLIERCHARGE") == null ? "" : map.get("SUPPLIERCHARGE").toString(); + if(supplierCharge == null) { + return AjaxResult.me().setSuccess(false).setMessage("当前批次之前未绑定供应商批次,请确认"); + } + } + } else { + return AjaxResult.me().setSuccess(false).setMessage("条码不存在"); + } + List> arrayList = new ArrayList> (); + Map map = new HashMap (); + map.put("MATERIALPACKINGNAME", materialPackingName); + map.put("SUPPLIERCHARGE", supplierCharge); + arrayList.add(map); + return AjaxResult.me().setSuccess(true).setResultObj(arrayList); + } + + /** + * 货位移动 + * @param in + * @return + */ + @RequestMapping(value = "/ChangeLocation", method = RequestMethod.POST) + public AjaxResult ChangeLocation(@RequestBody JSONObject in ){ + // com.zxy.idm.wms.solution.model.MaterialPacking materialPacking = JSON.toJavaObject(in, ShelfDto.class); + ShelfDto ShelfDto = JSON.toJavaObject(in, ShelfDto.class); + String siteName = ShelfDto.getSiteName(); + String user = ShelfDto.getUser(); + String commitDateString = ShelfDto.getCommitDate(); + String opCode = ShelfDto.getOpCode(); + String commitDate = commitDateString + " 00:00:00"; + // List list1 = new ArrayList<> (); + // for (MaterialPacking materialPacking : ShelfDto.getBoxList()) { + // MaterialPackingKey materialPackingKey; + // materialPackingKey = new MaterialPackingKey(); + // materialPackingKey.setSiteName(siteName); + // materialPackingKey.setMaterialPackingName(materialPacking.getMaterialPackingName()); + // list1.add(materialPackingKey); + // } + // List selectByKey = MaterialPackingServiceProxy.getMaterialPackingService().selectByKey(list1); + // ArrayList arrayList = new ArrayList<>(); + // arrayList.add(selectByKey); +// NoInvoiceManagerServiceImpl.PDAShelf(ShelfDto.getBoxList(),user,commitDate,opCode); + + // String SelectSql="SELECT m.MATERIALSPECNAME ,m2.DESC_CN ,m2.DESCRIPTION ,m.PHASE,m.CHARGE,m.MATERIALQUANTITY FROM MATERIALPACKING m LEFT JOIN MATERIALSPEC m2 ON m.MATERIALSPECNAME =m2.MATERIALSPECNAME WHERE m.MATERIALPACKINGNAME =:MATERIALPACKINGNAME"; + // Map bindMap3 = new HashMap(); + // bindMap3.put("MATERIALPACKINGNAME", materialPackingName); + // List> list3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(SelectSql, bindMap3); + return AjaxResult.me().setResultObj(null); + + } + + + /** + * 批次换绑供应商批次 + */ + @RequestMapping(value = "/ChangeSupplierCharge", method = RequestMethod.POST) + public AjaxResult ChangeSupplierCharge(@RequestBody JSONObject in ){ + ShelfDto ShelfDto = JSON.toJavaObject(in, ShelfDto.class); + String user = ShelfDto.getUser(); +// NoInvoiceManagerServiceImpl.ChangeChargeName(ShelfDto.getBoxList(),user); + return AjaxResult.me().setResultObj(null); + } + + public static Map getExpridate(String makeDate,String materialSpecName) { + String sql = "SELECT TO_TIMESTAMP(:MAKEDATE,'YYYYMMDD') MAKEDATE, NVL(T.EXPIRATIONDAY,180) + TO_TIMESTAMP(:MAKEDATE,'YYYYMMDD') EXP FROM MATERIALSPEC T WHERE T.MATERIALSPECNAME = :MATERIALSPECNAME"; + + Map hashMap = new HashMap (); + hashMap.put("MATERIALSPECNAME", materialSpecName); + hashMap.put("MAKEDATE", makeDate); + List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap); + + if (queryForList != null && queryForList.size() > 0) { + HashMap hashMap2 = new HashMap (); + hashMap2.put("MAKEDATE", queryForList.get(0).get("MAKEDATE")); + hashMap2.put("EXP", queryForList.get(0).get("EXP")); + return new HashMap (); + } + return null; + } +} diff --git a/zi-wms-pda/src/main/java/com/cim/idm/controller/ProduceReturnController.java b/zi-wms-pda/src/main/java/com/cim/idm/controller/ProduceReturnController.java index 3f2afd0..7fd405e 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/controller/ProduceReturnController.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/controller/ProduceReturnController.java @@ -125,20 +125,34 @@ public class ProduceReturnController { } //判断入库组织与接收组织是否一致 - String ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" + - "FROM MATERIALSHIPREQUEST mt\n" + - "LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" + - "WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" + - "AND M.MATERIALSPECNAME = :PRODUCTSPECNAME"; +// String ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" + +// "FROM MATERIALSHIPREQUEST mt\n" + +// "LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" + +// "WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" + +// "AND M.MATERIALSPECNAME = :PRODUCTSPECNAME"; String receiveRequestName = list2.get(0).get("RECEIVEREQUESTNAME") == null ? "" : list2.get(0).get("RECEIVEREQUESTNAME").toString(); String materialspecName = list2.get(0).get("MATERIALSPECNAME") == null ? "" : list2.get(0).get("MATERIALSPECNAME").toString(); + String ftySql; + if(receiveRequestName.contains("DC")) { + ftySql ="SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" + + "FROM MATERIALSHIPREQUEST mt\n" + + "LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SOURCENO = mt.SHIPREQUESTNAME \n" + + "WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)"; + }else { + ftySql = "SELECT DISTINCT M.SHIPREQUESTNAME,mt.ERPRECEIVEFACTORY,M.REQUESTQUANTITY,M.ASSIGNEDQUANTITY,M.MATERIALSPECNAME,M.PHASE,M.SDK_ID \n" + + "FROM MATERIALSHIPREQUEST mt\n" + + "LEFT JOIN MATERIALSHIPREQUESTDETAIL M ON M.SHIPREQUESTNAME = mt.SHIPREQUESTNAME \n" + + "WHERE (M.RETURNNO = :SOURCEORDER OR M.SHIPREQUESTNAME = :SOURCEORDER)\n" + + "AND M.MATERIALSPECNAME = :PRODCUTSPECNAME"; + } + Map ftyMap = new HashMap(); ftyMap.put("SOURCEORDER",receiveRequestName); - ftyMap.put("PRODUCTSPECNAME",materialspecName); + ftyMap.put("PRODCUTSPECNAME",materialspecName); List> list3 = IDMFrameServiceProxy.getSqlTemplate().queryForList(ftySql, ftyMap); - String erpreceiveFactory = list3.get(0).get("ERPRECEIVEFACTORY").toString(); + String erpreceiveFactory = list3.get(0).get("ERPRECEIVEFACTORY") == null ? "" :list3.get(0).get("ERPRECEIVEFACTORY").toString(); if(!erpreceiveFactory.equals(erpFactory)) { throw new GlobalException("仓库对应组织与单据接收组织不一致!"); } @@ -150,14 +164,31 @@ public class ProduceReturnController { // MapAll.put("list2",list2); // MapAll.put("list3",list3); // 求和所有的单据数量 -// String totalSql = "SELECT SUM(be.QTY) TOTALQTY FROM BS_MES_SHIPPED be WHERE REQUESTNAME = :SOURCEORDER"; // AND PRODUCTSPECNAME=:PRODUCTSPECNAME +// String totalSql = "SELECT SUM(be.QTY) TOTALQTY FROM BS_MES_SHIPPED be WHERE REQUESTNAME = :SOURCEORDER"; // AND PRODCUTSPECNAME=:PRODCUTSPECNAME // List> list4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(totalSql, ftyMap); // String totalQty = list4.get(0).get("TOTALQTY").toString(); // if(!list2.isEmpty()) { // list2.get(0).put("TOTALQTY",totalQty); // } - return AjaxResult.me().setResultObj(list2); + String bySql; +// String bySql = "SELECT b.PRODCUTSPECNAME MATERIALSPECNAME,0 HAVEQUANTITY,b.REQUESTNAME RECEIVEREQUESTNAME , b.PHASE,b.TRUEGG,SUM(b.QTY) TOTALQTY FROM BS_MES_SHIPPED b WHERE REQUESTNAME = :SOURCEORDER GROUP BY b.PRODCUTSPECNAME,b.REQUESTNAME,b.PHASE,b.TRUEGG"; + if(receiveRequestName.contains("DC")) { + bySql = "SELECT b.MATERIALSPECNAME,0 HAVEQUANTITY,b.SHIPREQUESTNAME RECEIVEREQUESTNAME , b.PHASE,SUM(b.REQUESTQUANTITY) TOTALQTY FROM MATERIALSHIPREQUESTDETAIL b WHERE SHIPREQUESTNAME = :SOURCEORDER GROUP BY b.MATERIALSPECNAME,b.SHIPREQUESTNAME,b.PHASE\n"; + }else { + bySql = "SELECT b.MATERIALSPECNAME,0 HAVEQUANTITY,b.SHIPREQUESTNAME RECEIVEREQUESTNAME , b.PHASE,SUM(b.REQUESTQUANTITY) TOTALQTY FROM MATERIALSHIPREQUESTDETAIL b WHERE RETURNNO = :SOURCEORDER GROUP BY b.MATERIALSPECNAME,b.SHIPREQUESTNAME,b.PHASE\n"; + } + + List> list4 = IDMFrameServiceProxy.getSqlTemplate().queryForList(bySql, ftyMap); + if(!receiveRequestName.contains("DC")) { +// list2.get(0).get("RECEIVEREQUESTNAME") = list3.get(0).get("RECEIVEREQUESTNAME").toString(); + list2.get(0).put("RECEIVEREQUESTNAME",list4.get(0).get("RECEIVEREQUESTNAME").toString()); + } + Map MapAll = new HashMap(); + MapAll.put("list2",list2); + MapAll.put("list4",list4); + return AjaxResult.me().setResultObj(MapAll); +// return AjaxResult.me().setResultObj(list2); } 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 7276c85..23b022a 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 @@ -10,6 +10,7 @@ import java.util.UUID; import com.cim.idm.framework.template.workflow.BpelExecuter; import com.cim.idm.model.ErpMessageLog; +import com.cim.idm.service.impl.ToSAPServiceImpl; import com.cim.idm.utils.AjaxResult; import com.cim.idm.utils.EventInfoUtil; import com.cim.idm.wmsextend.generic.GenericServiceProxy; @@ -60,6 +61,9 @@ public class QMSController { @Autowired(required = false) private BpelExecuter bpelExecuter; + @Autowired + private ToSAPServiceImpl toSAPService; + private static final Logger log = LoggerFactory.getLogger(QMSController.class); // private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl (); @@ -509,10 +513,10 @@ public class QMSController { } return result; } - + @RequestMapping(value = "/QMSSyncData", method = RequestMethod.POST) public AjaxResult QMSSyncData(@RequestBody JSONArray in) throws CustomException { - //重写QMS回传通用处理方法。zd.2024.9.9 + //重写QMS回传通用处理方法。 AjaxResult result = new AjaxResult(); ErpMessageLog loginfo = new ErpMessageLog(); loginfo.setServerName("QMSToWms"); @@ -565,18 +569,18 @@ public class QMSController { String user = ""; String expiringDateType=""; for (int i = 0; i < in.size(); i++) { - + JSONObject jb = in.getJSONObject(i); //String commonNumber = jb.get("commonNumber").toString();//通用单号 inspectionScenario=jb.get("inspectionScenario").toString();//0:原材 1:产成品 2:PET成品以及分切 3:销售退货检结果 4:过期复判检验结果 5. 胶水出库检结果 - + String materialCode = jb.get("materialCode")== null ? "" : jb.get("materialCode").toString();//料号 String pqcResult = jb.get("judgementResult")==null?"":jb.get("judgementResult").toString();//检验结果。0不合格 1合格 - if(StringUtils.equals("0", pqcResult)) + if(StringUtils.equals("0", pqcResult)) { pqcResult="NG"; } - else if(StringUtils.equals("1", pqcResult)) + else if(StringUtils.equals("1", pqcResult)) { pqcResult="OK"; } @@ -590,7 +594,7 @@ public class QMSController { // } makeEventInfo = EventInfoUtil.makeEventInfo("QMSSyncData", user, "QMSSyncData:"+inspectionScenario); String specialTreatment = jb.get("specialTreatment") == null ? "" : jb.get("specialTreatment").toString();//异常处理 (0复卷、1降级、2报废、3特采、4紧急放行、5退货) - for(int j=0;j mpkList=updateOqaResult(boxList,siteName,inspectionScenario,expiringDateType, expBoxList); //记录履历 - if(mpkList.size()>0) + if(mpkList.size()>0) { setEventOqaResult(mpkList,"",siteName,makeEventInfo); } //删除临时表数据 deleteQMSTemp(boxList); - + IDMFrameServiceProxy.getTransactionManager().commitTransaction(); result = AjaxResult.me().setSuccess(true).setMessage("执行成功"); } - catch(Exception e) + catch(Exception e) { e.printStackTrace(); IDMFrameServiceProxy.getTransactionManager().rollbackTransaction(); result = AjaxResult.me().setSuccess(false).setMessage("处理异常:" + e.getMessage()); return result; } - - + + return result; } diff --git a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java index 8f6b282..1e96500 100644 --- a/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java +++ b/zi-wms-pda/src/main/java/com/cim/idm/service/Impl/ReturnStockIntoServiceImpl.java @@ -214,7 +214,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { " m.DESC_CN ,\r\n" + " BMS.QTY ,\r\n" + " BMS.SHIPTIME ,\r\n" + - " SS.SDK_ID ,BMS .REQUESTNAME ,RETURNPC ,\r\n" + + " SS.SDK_ID ,BMS.REQUESTNAME ,RETURNPC ,\r\n" + " REGEXP_SUBSTR(BMS.LOTNAME , '[^|]+', 1, 5) AS CHARGE\r\n" + "FROM\r\n" + " BS_MES_SHIPPED BMS LEFT JOIN MATERIALSPEC m ON m.MATERIALSPECNAME = BMS.PRODUCTSPECNAME \r\n" + @@ -229,23 +229,24 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { if(list2.size() < 1) { throw new GlobalException( materialPackingName + "未打印退料标签,请联系IT处理!"); } - //根据退库信息获取退料单 - String sql3 = "SELECT\r\n" + - " M.SHIPREQUESTNAME,\r\n" + - " M.SHIPREQUESTDETAILNAME\r\n" + - "FROM\r\n" + - " MATERIALSHIPREQUESTDETAIL M\r\n" + - "WHERE\r\n" + - " (M.RETURNNO = :SHIPREQUESTNAME OR M.SHIPREQUESTNAME = :SHIPREQUESTNAME)\r\n" + - " AND M.MATERIALSPECNAME = :MATERIALSPECNAME AND M.CHARGE = :RETURNPC "; - bindMap.put("SHIPREQUESTNAME",list2.get(0).get("REQUESTNAME")); - bindMap.put("MATERIALSPECNAME",list2.get(0).get("PRODUCTSPECNAME")); - bindMap.put("RETURNPC",list2.get(0).get("RETURNPC")); - List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3, bindMap); - if (queryForList == null || queryForList.size() < 1) { - throw new GlobalException(list2.get(0).get("REQUESTNAME")+"退库单据信息不存在,请联系IT处理!"); - } + //根据退库信息获取退料单 +// String sql3 = "SELECT\r\n" + +// " M.SHIPREQUESTNAME,\r\n" + +// " M.SHIPREQUESTDETAILNAME\r\n" + +// "FROM\r\n" + +// " MATERIALSHIPREQUESTDETAIL M\r\n" + +// "WHERE\r\n" + +// " (M.RETURNNO = :SHIPREQUESTNAME OR M.SHIPREQUESTNAME = :SHIPREQUESTNAME)\r\n" + +// " AND M.MATERIALSPECNAME = :MATERIALSPECNAME AND M.CHARGE = :RETURNPC "; +// +// bindMap.put("SHIPREQUESTNAME",list2.get(0).get("REQUESTNAME")); +// bindMap.put("MATERIALSPECNAME",list2.get(0).get("PRODUCTSPECNAME")); +// bindMap.put("RETURNPC",list2.get(0).get("RETURNPC")); +// List> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql3, bindMap); +// if (queryForList == null || queryForList.size() < 1) { +// throw new GlobalException(list2.get(0).get("REQUESTNAME")+"退料单据信息不存在,请联系IT处理!"); +// } EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("createBoxInfoReturn", user, "createBoxInfoReturn", "", ""); try { @@ -260,7 +261,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { // args.add(actType1); // args.add(f.format(c.getTime())); - String ReceiveRequestActNo = ""; + String ReceiveRequestActNo = opCode; // ReceiveRequestActNo = NameServiceProxy.getNameRuleDefService() // .generateName("ReceiveActNo", args, 1).get(0); @@ -269,8 +270,11 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { // queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString(), list2.get(0).get("SHIPTIME").toString(), // ReceiveRequestActNo, "ProduceReturn", list2.get(0).get("QTY").toString(), list2.get(0).get("PRODUCTSPECNAME").toString()); - SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, - materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,queryForList.get(0).get("SHIPREQUESTNAME").toString(), queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString()); +// SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, +// materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,queryForList.get(0).get("SHIPREQUESTNAME").toString(), queryForList.get(0).get("SHIPREQUESTDETAILNAME").toString()); + + SHIPMesShippInfo(makeEventInfo, "SDK", materialPackingName, "", user, + materialPackingName, ReceiveRequestActNo, erpLocation, erpFactory, locationName,list2.get(0).get("REQUESTNAME").toString(), ""); } catch (Exception e) { e.printStackTrace(); @@ -540,7 +544,7 @@ public class ReturnStockIntoServiceImpl implements ReturnStockInService { for (int i = 0; i < queryForList2.size(); i++) { String receiveRequestName = queryForList2.get(i).get("RECEIVEREQUESTNAME").toString(); String erpLocation = queryForList2.get(i).get("ERPLOCATION").toString(); - String shipRequestType=queryForList2.get(i).get("SHIPREQUESTTYPE").toString(); +// String shipRequestType=queryForList2.get(i).get("SHIPREQUESTTYPE").toString(); String billCode=""; ToSAPServiceImpl.ReturnStockInNew("SDK", eventUser, receiveRequestName, commitDate,opCode); if (billCode.length() == 0) {