فهرست منبع

【华信科】【富勒WMS对接】【内部交易】

wuyx 7 ماه پیش
والد
کامیت
a4c5da80a3

+ 1 - 1
src/main/java/com/uas/eis/service/Impl/DocCommonServiceImpl.java

@@ -302,7 +302,7 @@ public class DocCommonServiceImpl implements DocCommonService {
          * 审核 -> 1=已释放
          * prodInOut.getPiInvoStatusCode().equals("COMMITED") &&
          *  */
-        if(prodInOut.getPiSendwmsflag()>0 || !prodInOut.getPiClass().equals("出货单")){
+        if(prodInOut.getPiSendwmsflag()>0 || !prodInOut.getPiOrderType().equals("XSCK")){
             deliveryOrder.setIsRelease("1");
         }else {
             deliveryOrder.setIsRelease("0");

+ 60 - 22
src/main/java/com/uas/eis/service/Impl/ERPSWMServiceImpl.java

@@ -9,7 +9,9 @@ import com.uas.eis.entity.vwms.req.INConfirm;
 import com.uas.eis.entity.vwms.req.OUTConfirm;
 import com.uas.eis.sdk.entity.WMSApiResult;
 import com.uas.eis.sdk.entity.WMSApiResultResp;
+import com.uas.eis.service.ERPService;
 import com.uas.eis.service.ERPWMSService;
+import com.uas.eis.utils.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,9 +31,11 @@ public class ERPSWMServiceImpl implements ERPWMSService {
 
     @Autowired
     private BaseDao baseDao;
+    @Autowired
+    private ERPService erpService;
 
     @Override
-    public WMSApiResultResp  IOConfirm(String method,  HttpServletRequest request) throws IOException {
+    public WMSApiResultResp IOConfirm(String method, HttpServletRequest request) throws IOException {
         WMSApiResultResp resp = new WMSApiResultResp();
         WMSApiResult wmsApiResult = new WMSApiResult();
         String masterName = "";
@@ -43,16 +47,16 @@ public class ERPSWMServiceImpl implements ERPWMSService {
         ObjectMapper objectMapper = new ObjectMapper();
         BaseReq req = null;
         //入库确认 openapi.entryorder.confirm
-        if("openapi.entryorder.confirm".equals(method)){
+        if ("openapi.entryorder.confirm".equals(method)) {
             req = objectMapper.readValue(confirmBody,
                     objectMapper.getTypeFactory().constructParametricType(BaseReq.class, INConfirm.class));
-            INConfirm inConfirm = (INConfirm)req.getRequest();
+            INConfirm inConfirm = (INConfirm) req.getRequest();
             INConfirm.EntryOrder entryOrder = inConfirm.getEntryOrder();
             masterName = inConfirm.getMasterName();
             orderCode = entryOrder.getEntryOrderCode();
         }
         //出库确认 openapi.stockout.confirm
-        if("openapi.stockout.confirm".equals(method)){
+        if ("openapi.stockout.confirm".equals(method)) {
             req = objectMapper.readValue(confirmBody,
                     objectMapper.getTypeFactory().constructParametricType(BaseReq.class, OUTConfirm.class));
             OUTConfirm outConfirm = (OUTConfirm) req.getRequest();
@@ -60,7 +64,7 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             masterName = outConfirm.getMasterName();
             orderCode = order.getDeliveryOrderCode();
         }
-        if("openapi.adjustmentorder.confirm".equals(method)){
+        if ("openapi.adjustmentorder.confirm".equals(method)) {
             req = objectMapper.readValue(confirmBody,
                     objectMapper.getTypeFactory().constructParametricType(BaseReq.class, AdjustConfirm.class));
             AdjustConfirm adjustConfirm = (AdjustConfirm) req.getRequest();
@@ -68,31 +72,31 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             masterName = adjustConfirm.getMasterName();
             orderCode = order.getAdjustmentOrderCode();
         }
-        if(orderCode == null || orderCode.equals("")){
+        if (orderCode == null || orderCode.equals("")) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的单据");
             resp.setResponse(wmsApiResult);
             return resp;
         }
-        if(masterName == null || masterName.equals("")){
+        if (masterName == null || masterName.equals("")) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的账套");
             resp.setResponse(wmsApiResult);
             return resp;
         }
-        String masterCode = baseDao.queryForObject("SELECT max(MA_USER) FROM DATACENTER_P.MASTER WHERE MA_ENABLE = 1 and MA_FUNCTION = ?",String.class,masterName);
-        if(masterCode == null){
+        String masterCode = baseDao.queryForObject("SELECT max(MA_USER) FROM DATACENTER_P.MASTER WHERE MA_ENABLE = 1 and MA_FUNCTION = ?", String.class, masterName);
+        if (masterCode == null) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的账套");
             resp.setResponse(wmsApiResult);
             return resp;
         }
-        logger.info("IOConfirm-Begin:method {} inoutno {}",method, orderCode);
-        SqlRowList piMsg = baseDao.queryForRowSet("select pi_id,pi_inoutno from "+masterCode+".PRODINOUT WHERE PI_INOUTNO = '"+orderCode+"'");
-        if(!piMsg.next()){
+        logger.info("IOConfirm-Begin:method {} inoutno {}", method, orderCode);
+        SqlRowList piMsg = baseDao.queryForRowSet("select pi_id,pi_inoutno,pi_class,pi_wmsordertype,pi_postmastercode from " + masterCode + ".PRODINOUT WHERE PI_INOUTNO = '" + orderCode + "'");
+        if (!piMsg.next()) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
@@ -101,24 +105,24 @@ public class ERPSWMServiceImpl implements ERPWMSService {
         }
         Long piId = piMsg.getGeneralLong("pi_id");
         String inoutno = piMsg.getGeneralString("pi_inoutno");
-        if(piId == null){
+        if (piId == null) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
             resp.setResponse(wmsApiResult);
             return resp;
         }
-        if("openapi.entryorder.confirm".equals(method)){
+        if ("openapi.entryorder.confirm".equals(method)) {
             INConfirm inf = (INConfirm) req.getRequest();
             sqls.add(inf.getGenerateMainSql());
             sqls.addAll(inf.getGenerateLinesSql());
         }
-        if("openapi.stockout.confirm".equals(method)){
+        if ("openapi.stockout.confirm".equals(method)) {
             OUTConfirm outf = (OUTConfirm) req.getRequest();
             sqls.add(outf.getGenerateMainSql());
             sqls.addAll(outf.getGenerateLinesSql());
         }
-        if("openapi.adjustmentorder.confirm".equals(method)){
+        if ("openapi.adjustmentorder.confirm".equals(method)) {
             AdjustConfirm adjustf = (AdjustConfirm) req.getRequest();
             sqls.add(adjustf.getGenerateMainSql());
             sqls.addAll(adjustf.getGenerateLinesSql());
@@ -131,12 +135,12 @@ public class ERPSWMServiceImpl implements ERPWMSService {
         }
         baseDao.execute(sqls);
         //根据下载采集数据分配采集数并自动过账
-        String res = baseDao.callProcedure(masterCode+".DOCWMS_IO_CONFIRM",new Object[] { piId,null });
+        String res = baseDao.callProcedure(masterCode + ".DOCWMS_IO_CONFIRM", new Object[]{piId, null});
         if (res != null && !res.trim().equals("")) {
-            logger.info("IOConfirm-Err: {}",res);
-            if(res.startsWith("AFTERSUCCESS:")){
-                wmsApiResult.setMessage("成功但是有异常:"+res.replaceAll("AFTERSUCCESS:",""));
-            }else {
+            logger.info("IOConfirm-Err: {}", res);
+            if (res.startsWith("AFTERSUCCESS:")) {
+                wmsApiResult.setMessage("成功但是有异常:" + res.replaceAll("AFTERSUCCESS:", ""));
+            } else {
                 wmsApiResult.setFlag("failure");
                 wmsApiResult.setCode("403");
                 wmsApiResult.setMessage(res);
@@ -144,7 +148,41 @@ public class ERPSWMServiceImpl implements ERPWMSService {
                 return resp;
             }
         }
-        logger.info("IOConfirm-End:method {} inoutno {}",method, orderCode);
+        //内部交易对接:
+        //出货单 -> 采购验收单 国内->国内
+        if ("openapi.adjustmentorder.confirm".equals(method) && StringUtil.hasText(piMsg.getGeneralString("pi_postmastercode"))) {
+            if ("NBZK".equals(piMsg.getGeneralString("pi_wmsordertype"))) {
+                String toSob = piMsg.getGeneralString("pi_postmastercode");
+                SqlRowList pito = baseDao.queryForRowSet("select pi_id,pi_inoutno,pi_class,ds_table,pi_wmsordertype,pi_sendwmsflag,pi_wmsstatus from " + toSob + ".prodinout left join documentsetup on ds_name = pi_class  " +
+                        "where pi_sourcecode='" + piMsg.getGeneralString("pi_inoutno") + "' and pi_sourcetype = '" + piMsg.getGeneralString("pi_class") + "'");
+                if (pito.next()) {
+                    if (pito.getGeneralInt("pi_sendwmsflag") == 0&& !"已确认".equals(pito.getGeneralString("pi_wmsstatus"))
+                            &&StringUtil.hasText(pito.getGeneralString("pi_wmsordertype"))
+                    ) {
+                        String idTo = pito.getGeneralString("pi_id");
+                        String codeTo = pito.getGeneralString("pi_inoutno");
+                        String toCaller = pito.getGeneralString("ds_table");
+                        //发起对接
+                        try {
+                            Map<String, Object> sendRes = erpService.sendIO(toSob, idTo, "WMS库存转移确认", toCaller);
+                            if (sendRes.get("success") != null && "true".equals(sendRes.get("success").toString())) {
+                                baseDao.execute("update " + toSob + ".prodinout set pi_wmsordercode='" + sendRes.get("OrderId") + "',pi_sendwmsstatus='同步成功' ,pi_sendwmserr=null,pi_sendwmsflag=-1 where pi_id = " + idTo);
+                                //记录日志
+                                baseDao.execute("Insert into " + toSob + ".MESSAGELOG (ML_ID,ML_DATE,ML_MAN,ML_CONTENT,ML_RESULT,ML_SEARCH,CODE) values (" + toSob + ".MESSAGELOG_seq.nextval,sysdate,'WMS库存转移确认','同步至WMS','同步成功','" + toCaller + "|pi_id=" + idTo + "','" + codeTo + "')");
+                            } else {
+                                String message = sendRes.get("message") == null ? "同步失败" : sendRes.get("message").toString().replaceAll("'", "''");
+                                baseDao.execute("update " + toSob + ".prodinout set pi_sendwmsstatus='同步失败',pi_sendwmserr=('" + message + "') where pi_id = " + idTo);
+                                //记录日志
+                                baseDao.execute("Insert into " + toSob + ".MESSAGELOG (ML_ID,ML_DATE,ML_MAN,ML_CONTENT,ML_RESULT,ML_SEARCH,CODE) values (" + toSob + ".MESSAGELOG_seq.nextval,sysdate,'WMS库存转移确认','同步至WMS','同步失败:" + message + "','" + toCaller + "|pi_id=" + idTo + "','" + codeTo + "')");
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+            }
+        }
+        logger.info("IOConfirm-End:method {} inoutno {}", method, orderCode);
         resp.setResponse(wmsApiResult);
         return resp;
     }