Procházet zdrojové kódy

调整MES对接ERP传参方式及参数格式接口

koul před 4 roky
rodič
revize
8cdef5b8d9

+ 4 - 5
src/main/java/com/uas/eis/controller/ERPController.java

@@ -1,7 +1,6 @@
 package com.uas.eis.controller;
 
 import com.uas.eis.sdk.entity.ApiResult;
-import com.uas.eis.sdk.resp.ApiResponse;
 
 import com.uas.eis.service.ERPService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +25,7 @@ public class ERPController {
      */
     @RequestMapping("/erp/syncProduct")
     public ApiResult<String> syncProduct(String data){
-        return ApiResponse.successRsp("0",erpService.syncProduct(data));
+        return erpService.syncProduct(data);
     }
 
     /**
@@ -36,7 +35,7 @@ public class ERPController {
      */
     @RequestMapping("/erp/syncMakeBase")
     public ApiResult<String> syncMakeBase(String data){
-        return ApiResponse.successRsp("0",erpService.syncMakeBase(data));
+        return erpService.syncMakeBase(data);
     }
 
     /**
@@ -46,7 +45,7 @@ public class ERPController {
      */
     @RequestMapping("/erp/syncMakeBaseDetail")
     public ApiResult<String> syncMakeBaseDetail(String data){
-        return ApiResponse.successRsp("0",erpService.syncMakeBaseDetail(data));
+        return erpService.syncMakeBaseDetail(data);
     }
 
     /**
@@ -56,6 +55,6 @@ public class ERPController {
      */
     @RequestMapping("/erp/syncUpdateReceiveByErp")
     public ApiResult<String> syncUpdateReceiveByErp(String data){
-        return ApiResponse.successRsp("0",erpService.syncUpdateReceiveByErp(data));
+        return erpService.syncUpdateReceiveByErp(data);
     }
 }

+ 13 - 12
src/main/java/com/uas/eis/controller/MESController.java

@@ -21,22 +21,22 @@ public class MESController {
 
     /**
      * 获取ERP收料单
-     * @param data
+     * @param
      * @return
      */
     @RequestMapping("/mes/checkVerifyApply")
-    public ApiResult<String> checkVerifyApply(HttpServletRequest request, String data){
-        return mesService.checkVerifyApply(request,data);
+    public ApiResult<String> checkVerifyApply(HttpServletRequest request){
+        return mesService.checkVerifyApply(request);
     }
 
     /**
      * 确认入库
-     * @param data
+     * @param
      * @return
      */
     @RequestMapping("/mes/purcCheckin")
-    public ApiResult<String> purcCheckin(HttpServletRequest request,String data){
-        return mesService.purcCheckin(request,data);
+    public ApiResult<String> purcCheckin(HttpServletRequest request){
+        return mesService.purcCheckin(request);
     }
 
     /**
@@ -47,24 +47,25 @@ public class MESController {
     public ApiResult<String> prodInOutMakeIn(HttpServletRequest request){
         return mesService.prodInOutMakeIn(request);
     }
+
     /**
      * 工单删除校验接口
-     * @param data
+     * @param
      * @return
      */
     @RequestMapping("/mes/makeDeleteCheck")
-    public ApiResult<String> makeDeleteCheck(HttpServletRequest request,String data){
-        return mesService.makeDeleteCheck(request,data);
+    public ApiResult<String> makeDeleteCheck(HttpServletRequest request){
+        return mesService.makeDeleteCheck(request);
     }
 
     /**
      * 报废单
-     * @param data
+     * @param
      * @return
      */
     @RequestMapping("/mes/initMakeScrap")
-    public ApiResult<String> initMakeScrap(HttpServletRequest request,String data){
-        return mesService.initMakeScrap(request,data);
+    public ApiResult<String> initMakeScrap(HttpServletRequest request){
+        return mesService.initMakeScrap(request);
     }
 
 

+ 2 - 1
src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java

@@ -17,7 +17,7 @@ import java.util.*;
 public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
 
     // 签名超时时长,默认时间为5分钟,ms
-    private static final int SIGN_EXPIRED_TIME = 60 * 60 * 1000;
+    private static final int SIGN_EXPIRED_TIME = 5 * 60 * 1000;
     private static final String ACCESS_KEY = "AccessKey";
     private static final String ACCESS_SECRET = "AccessSecret";
     private static final String TIMESTAMP_KEY = "Timestamp";
@@ -26,6 +26,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
     private static Map<String,String> tokenConfig = TokenProperties.getAllProperty();
 
 
+    @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 
         Map<String, Object> result = new HashMap<String, Object>();

+ 5 - 5
src/main/java/com/uas/eis/entity/VerifyApply.java

@@ -64,7 +64,7 @@ public class VerifyApply {
     @JSONField(name = "custName")
     private String va_custname;
     @JSONField(name = "recType")
-    private String va_putype;
+    private String va_type;
     @JSONField(name = "devNo")
     private String va_pucode;
     @JSONField(name = "fSourceInterId")
@@ -102,12 +102,12 @@ public class VerifyApply {
         this.mesPwd = mesPwd;
     }
 
-    public String getVa_putype() {
-        return va_putype;
+    public String getVa_type() {
+        return va_type;
     }
 
-    public void setVa_putype(String va_putype) {
-        this.va_putype = va_putype;
+    public void setVa_type(String va_type) {
+        this.va_type = va_type;
     }
 
     public String getVa_status() {

+ 6 - 4
src/main/java/com/uas/eis/service/ERPService.java

@@ -1,6 +1,8 @@
 package com.uas.eis.service;
 
 
+import com.uas.eis.sdk.entity.ApiResult;
+
 /**
  * @author koul
  * @email koul@usoftchina.com
@@ -8,11 +10,11 @@ package com.uas.eis.service;
  */
 public interface ERPService {
 
-    String syncProduct(String data);
+    ApiResult<String> syncProduct(String data);
 
-    String syncMakeBase(String data);
+    ApiResult<String> syncMakeBase(String data);
 
-    String syncMakeBaseDetail(String data);
+    ApiResult<String> syncMakeBaseDetail(String data);
 
-    String syncUpdateReceiveByErp(String data);
+    ApiResult<String> syncUpdateReceiveByErp(String data);
 }

+ 17 - 16
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -6,6 +6,8 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.uas.eis.core.support.TokenProperties;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.entity.*;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.ERPService;
 import com.uas.eis.utils.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,7 +30,7 @@ public class ERPServiceImpl implements ERPService {
     private BaseDao baseDao;
 
     @Override
-    public String syncProduct(String data) {
+    public ApiResult<String> syncProduct(String data) {
         Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
         Product product = baseDao.getJdbcTemplate().queryForObject("select nvl(pr_kh_user,'') pr_kh_user,nvl(pr_code,'') pr_code ,nvl" +
                         "(pr_detail,'') pr_detail ," + "nvl(pr_spec,'') pr_spec ," +
@@ -40,37 +42,37 @@ public class ERPServiceImpl implements ERPService {
         product.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
         product.setMesUser(tokenConfig.get("mesUser"));
         product.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
-        return syncMES(JSON.toJSONString(product, SerializerFeature.WriteMapNullValue),tokenConfig.get("syncProduct"));
+        return syncMES(JSON.toJSONString(product, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncProduct"));
 
     }
 
     @Override
-    public String syncMakeBase(String data) {
+    public ApiResult<String> syncMakeBase(String data) {
         Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
         Make make = baseDao.getJdbcTemplate().queryForObject("select ma_code,ma_prodcode,ma_qty,ma_custcode,pr_unit,pr_detail,pr_spec,ma_salecode,to_char(ma_planbegindate,'yyyy-MM-dd') ma_planbegindate,to_char(ma_planenddate,'yyyy-MM-dd') ma_planenddate,nvl(ma_cop,'BYT') ma_cop,'S' status,to_char(ma_date,'yyyy-MM-dd HH24:mi:ss') ma_date,ma_recorder,nvl(ma_version,0) ma_version,ma_id,wc_id,pr_id,to_char(ma_modifydate,'yyyy-MM-dd HH24:mi:ss') ma_modifydate,ma_modifier from make left join product on ma_prodcode=pr_code left join workcenter on ma_wccode=wc_code where ma_id=?",
                 new BeanPropertyRowMapper<Make>(Make.class),store.get("ma_id"));
         make.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
         make.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
         make.setMesUser(tokenConfig.get("mesUser"));
-        return syncMES(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue),tokenConfig.get("syncMakeBase"));
+        return syncMES(JSON.toJSONString(make, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBase"));
     }
 
     @Override
-    public String syncMakeBaseDetail(String data) {
+    public ApiResult<String> syncMakeBaseDetail(String data) {
         Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
-        MakeMaterial makeMaterial = baseDao.getJdbcTemplate().queryForObject("select mm_code,mm_detno,mm_prodcode,pr_detail,pr_spec,pr_unit,mm_oneuseqty qty,mm_qty,mm_oneuseqty,'main' type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,nvl(bo_version,0) bo_version,nvl(bo_cop,'BYT') bo_cop,mm_repprodcode,mm_balance,ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder " +
+        MakeMaterial makeMaterial = baseDao.getJdbcTemplate().queryForObject("select mm_code,mm_id,mm_prodcode,pr_detail,pr_spec,pr_unit,mm_oneuseqty qty,mm_qty,mm_oneuseqty,case when mm_ifrep=-1 then 'alternative' else 'main' end type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,nvl(bo_version,0) bo_version,nvl(bo_cop,'BYT') bo_cop,mm_repprodcode,mm_balance,ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder " +
                         "from MakeMaterial left join make on ma_id=mm_maid left join Product on mm_prodcode=pr_code left join bom on bo_id=ma_bomid left join MakeMaterialChangeDet on md_makecode=ma_code and md_mmdetno=mm_detno left join MakeMaterialChange on mc_id=md_mcid where mm_id=?",
                 new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class),store.get("mm_id"));
         makeMaterial.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
         makeMaterial.setMesUser(tokenConfig.get("mesUser"));
         makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
-        return syncMES(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue),tokenConfig.get("syncMakeBaseDetail"));
+        return syncMES(JSON.toJSONString(makeMaterial, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncMakeBaseDetail"));
     }
 
     @Override
-    public String syncUpdateReceiveByErp(String data) {
+    public ApiResult<String> syncUpdateReceiveByErp(String data) {
         Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
-        VerifyApply verifyApply = baseDao.getJdbcTemplate().queryForObject("select va_id,va_mescode,va_code,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,va_vendcode,va_vendname,va_currency,va_rate,va_paymentscode,va_payments,va_transport,va_sendcode,va_emcode,va_emname,va_whcode,va_whname,va_departmentcode,va_department,va_recorder,nvl(va_cop,'BYT') va_cop,va_remark,va_ancode,va_factory,0 version,va_custcode,va_custname,va_putype,va_pucode,case when nvl(va_pucode,' ')=' ' then 0 else (select pu_id from purchase where pu_code=va_pucode) end pu_id,va_status,1 posted,to_char(va_auditdate,'yyyy-MM-dd HH24:mi:ss') va_auditdate,va_auditman " +
+        VerifyApply verifyApply = baseDao.getJdbcTemplate().queryForObject("select va_id,va_mescode,va_code,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,va_vendcode,va_vendname,va_currency,va_rate,va_paymentscode,va_payments,va_transport,va_sendcode,va_emcode,va_emname,va_whcode,va_whname,va_departmentcode,va_department,va_recorder,nvl(va_cop,'BYT') va_cop,va_remark,va_ancode,va_factory,0 version,va_custcode,va_custname,va_type,va_pucode,case when nvl(va_pucode,' ')=' ' then 0 else (select pu_id from purchase where pu_code=va_pucode) end pu_id,va_status,1 posted,to_char(va_auditdate,'yyyy-MM-dd HH24:mi:ss') va_auditdate,va_auditman " +
                         "from VerifyApply where va_statuscode='AUDITED' and va_mescode=?",
                 new BeanPropertyRowMapper<VerifyApply>(VerifyApply.class), store.get("mesCode"));
         verifyApply.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
@@ -78,25 +80,24 @@ public class ERPServiceImpl implements ERPService {
         verifyApply.setFlag(Integer.parseInt(StringUtil.nvl(store.get("flag"),"-1")));
         List<VerifyApplyDetail> verifyApplyDetails = baseDao.query("select vad_code,vad_prodcode,pr_detail,pr_spec,pr_unit,sum(nvl(vad_qty,0)) vad_qty from verifyapplydetail left join product on vad_prodcode=pr_code where vad_vaid=" + verifyApply.getVa_id() + " group by vad_code,vad_prodcode,pr_detail,pr_spec,pr_unit", VerifyApplyDetail.class);
         verifyApply.setDetail(verifyApplyDetails);
-        return syncMES(JSON.toJSONString(verifyApply, SerializerFeature.WriteMapNullValue),tokenConfig.get("syncUpdateReceiveByErp"));
+        return syncMES(JSON.toJSONString(verifyApply, SerializerFeature.WriteMapNullValue).replace("null","\"\""),tokenConfig.get("syncUpdateReceiveByErp"));
     }
 
-    private String syncMES(String params,String url){
+    private ApiResult<String> syncMES(String params,String url){
         try {
             System.err.println(params);
             String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
             JSONObject jsonObject = JSON.parseObject(post);
             int code = jsonObject.getIntValue("result");
             if (code==0){
-                return "同步MES成功";
+                return ApiResponse.successRsp("0","同步MES成功");
             }else if(code==1){
-                return jsonObject.getString("message");
+                return ApiResponse.failRsp("101",jsonObject.getString("message"));
             }else {
-                return "接口调用异常,请联系MES处理!";
+                return ApiResponse.failRsp("102","接口调用异常,请联系MES处理!");
             }
         }catch (Exception e){
-            e.printStackTrace();
-            return e.getMessage();
+            return ApiResponse.failRsp("102","接口调用异常,请联系MES处理!");
         }
     }
 }

+ 97 - 72
src/main/java/com/uas/eis/service/Impl/MESServiceImpl.java

@@ -35,13 +35,13 @@ public class MESServiceImpl implements MESService {
     private TransferRepository transferRepository;
 
     @Override
-    public ApiResult<String> checkVerifyApply(HttpServletRequest request,String data) {
-        Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
-        String mesCode = StringUtil.nvl(store.get("mesCode"), "");
+    public ApiResult<String> checkVerifyApply(HttpServletRequest request) {
+        JSONObject jsonData = getJsonData(request);
+        String mesCode = StringUtil.nvl(jsonData.get("mesCode"), "");
         if ("".equals(mesCode)){
             return ApiResponse.failRsp("10011",request.getHeader("RequestId"),"MES编号不能为空!");
         }
-        VerifyApply verifyApply = baseDao.getJdbcTemplate().queryForObject("select va_id,va_mescode,va_code,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,va_vendcode,va_vendname,va_currency,va_rate,va_paymentscode,va_payments,va_transport,va_sendcode,va_emcode,va_emname,va_whcode,va_whname,va_departmentcode,va_department,va_recorder,nvl(va_cop,'BYT') va_cop,va_remark,va_ancode,va_factory,0 version,va_custcode,va_custname,va_putype,va_pucode,case when nvl(va_pucode,' ')=' ' then 0 else (select pu_id from purchase where pu_code=va_pucode) end pu_id,va_status,1 posted,to_char(va_auditdate,'yyyy-MM-dd HH24:mi:ss') va_auditdate,va_auditman " +
+        VerifyApply verifyApply = baseDao.getJdbcTemplate().queryForObject("select va_id,va_mescode,va_code,to_char(va_date,'yyyy-MM-dd HH24:mi:ss') va_date,va_vendcode,va_vendname,va_currency,va_rate,va_paymentscode,va_payments,va_transport,va_sendcode,va_emcode,va_emname,va_whcode,va_whname,va_departmentcode,va_department,va_recorder,nvl(va_cop,'BYT') va_cop,va_remark,va_ancode,va_factory,0 version,va_custcode,va_custname,va_type,va_pucode,case when nvl(va_pucode,' ')=' ' then 0 else (select pu_id from purchase where pu_code=va_pucode) end pu_id,va_status,1 posted,to_char(va_auditdate,'yyyy-MM-dd HH24:mi:ss') va_auditdate,va_auditman " +
                         "from VerifyApply where va_statuscode='AUDITED' and va_mescode=?",
                 new BeanPropertyRowMapper<VerifyApply>(VerifyApply.class), mesCode);
         if (verifyApply==null) {
@@ -54,49 +54,55 @@ public class MESServiceImpl implements MESService {
     }
 
     @Override
-    public ApiResult<String> purcCheckin(HttpServletRequest request,String data) {
-        Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
-        String mesCode = StringUtil.nvl(store.get("mesCode"), "");
-        if ("".equals(mesCode)){
-            return ApiResponse.failRsp("10011",request.getHeader("RequestId"),"MES编号不能为空!");
-        }
-        int count = baseDao.getCountByCondition("verifyApply", "va_statuscode='AUDITED' and va_mescode='" + mesCode + "'");
-        if (count<1){
-            return ApiResponse.failRsp("10012",request.getHeader("RequestId"),"单据未审核或不存在,请确认!");
-        }
-        Object vaid = baseDao.getFieldDataByCondition("verifyApply", "va_id", "va_statuscode='AUDITED" +
-                "' and va_mescode='" + mesCode + "'");
-        int count1 = baseDao.getCount("select count(1) from VerifyApplyDetail where nvl(vad_pucode,' ')<>' ' and " +
-                "vad_vaid=" + vaid);
+    public ApiResult<String> purcCheckin(HttpServletRequest request) {
+        Map<String, JSONArray> data = getData(request);
+        JSONArray jsonArray = data.get("main");
+        Object vaid=0;
         String caller="VerifyApply!ToOtherIn";
         String type="其它入库单";
-        if (count1>0){
-            caller="VerifyApply!ToPurcIn";
-            type="采购验收单";
-        }
-        int piid ;
-        //判断已转数
-        Object chekQty = baseDao.getJdbcTemplate().queryForObject("select wmsys.wm_concat('收料单:'||vad_code||'序号:'||vad_detno)  from VerifyApplyDetail where vad_qty <= vad_yqty and vad_vaid = "+vaid, String.class);
-        if(chekQty !=null){
-            return ApiResponse.failRsp("10013",request.getHeader("RequestId"),"检测到" + chekQty + ",本次数量超出可转数量!");
-        }
-        if ("VerifyApply!ToPurcIn".equals(caller)) {
-            // 判断该收料通知单是否已经转入过采购验收单
-            Object code = baseDao.getFieldDataByCondition("VerifyApply", "va_code", "va_id=" + vaid);
-            code = baseDao.getFieldDataByCondition("ProdInOut", "pi_inoutno", "pi_sourcecode='" + code + "' and PI_REFNO='采购收料单'");
-            if (code != null && !code.equals("")) {
-                return ApiResponse.failRsp("10014", request.getHeader("RequestId"), "该收料单已转入过采购验收单,验收单号[" + code + "]");
+        String sellerName="";
+        for (int i = 0; i <jsonArray.size() ; i++) {
+            JSONObject jsonObject = JSON.parseObject(StringUtil.nvl(jsonArray.get(i), ""));
+            Object mesCode = StringUtil.nvl(jsonObject.get("mesCode"),"");
+            if ("".equals(mesCode)){
+                return ApiResponse.failRsp("10011",request.getHeader("RequestId"),"MES编号不能为空!");
             }
-        }
-        if ("VerifyApply!ToOtherIn".equals(caller)) {
-            // 判断该收料通知单是否已经转入过采购验收单
-            Object code = baseDao.getFieldDataByCondition("VerifyApply", "va_code", "va_id=" + vaid);
-            code = baseDao.getFieldDataByCondition("ProdInOut", "pi_inoutno", "pi_sourcecode='" + code + "' and PI_REFNO='采购收料单'");
-            if (code != null && !code.equals("")) {
-                return ApiResponse.failRsp("10014", request.getHeader("RequestId"), "该收料单已转入过其它入库单,单号[" + code + "]");
+            int count = baseDao.getCountByCondition("verifyApply", "va_statuscode='AUDITED' and va_mescode='" + mesCode + "'");
+            if (count<1){
+                return ApiResponse.failRsp("10012",request.getHeader("RequestId"),"单据未审核或不存在,请确认!");
+            }
+            vaid = baseDao.getFieldDataByCondition("verifyApply", "va_id", "va_statuscode='AUDITED" +
+                    "' and va_mescode='" + mesCode + "'");
+            int count1 = baseDao.getCount("select count(1) from VerifyApplyDetail where nvl(vad_pucode,' ')<>' ' and " +
+                    "vad_vaid=" + vaid);
+            if (count1>0){
+                caller="VerifyApply!ToPurcIn";
+                type="采购验收单";
+            }
+            //判断已转数
+            Object chekQty = baseDao.getJdbcTemplate().queryForObject("select wmsys.wm_concat('收料单:'||vad_code||'序号:'||vad_detno)  from VerifyApplyDetail where vad_qty <= vad_yqty and vad_vaid = "+vaid, String.class);
+            if(chekQty !=null){
+                return ApiResponse.failRsp("10013",request.getHeader("RequestId"),"检测到" + chekQty + ",本次数量超出可转数量!");
+            }
+            if ("VerifyApply!ToPurcIn".equals(caller)) {
+                // 判断该收料通知单是否已经转入过采购验收单
+                Object code = baseDao.getFieldDataByCondition("VerifyApply", "va_code", "va_id=" + vaid);
+                code = baseDao.getFieldDataByCondition("ProdInOut", "pi_inoutno", "pi_sourcecode='" + code + "' and PI_REFNO='采购收料单'");
+                if (code != null && !code.equals("")) {
+                    return ApiResponse.failRsp("10014", request.getHeader("RequestId"), "该收料单已转入过采购验收单,验收单号[" + code + "]");
+                }
+            }
+            if ("VerifyApply!ToOtherIn".equals(caller)) {
+                // 判断该收料通知单是否已经转入过采购验收单
+                Object code = baseDao.getFieldDataByCondition("VerifyApply", "va_code", "va_id=" + vaid);
+                code = baseDao.getFieldDataByCondition("ProdInOut", "pi_inoutno", "pi_sourcecode='" + code + "' and PI_REFNO='采购收料单'");
+                if (code != null && !code.equals("")) {
+                    return ApiResponse.failRsp("10014", request.getHeader("RequestId"), "该收料单已转入过其它入库单,单号[" + code + "]");
+                }
             }
+            sellerName = StringUtil.nvl(jsonObject.get("sellerName"), "管理员");
         }
-        String sellerName = StringUtil.nvl(store.get("sellerName"), "管理员");
+        int piid ;
         Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_name=?",
                 new BeanPropertyRowMapper<Employee>(Employee.class), sellerName);
         // 转采购验收单
@@ -207,12 +213,13 @@ public class MESServiceImpl implements MESService {
             }
             String fSourceBillNo = StringUtil.nvl(jsonObject3.get("FSourceBillNo"), "");
             String fICMOBillNo = StringUtil.nvl(jsonObject3.get("FICMOBillNo"), "");
+            String fEntrySelfA0248 = StringUtil.nvl(jsonObject3.get("FEntrySelfA0248"), "");
             sqls.add("insert into prodiodetail (pd_id,pd_piid,pd_inoutno,pd_piclass,pd_pdno,pd_ordercode,pd_prodcode," +
                     "pd_batchcode,pd_inqty,pd_nxlh,pd_purcrate,pd_notinqty,pd_orderprice,pd_ordertotal,pd_price," +
                     "pd_total,pd_whcode,pd_whname,pd_remark,pd_prodmadedate,pd_replydate,pd_location,pd_macode) " +
                     "values (PRODIODETAIL_SEQ.nextval,"+id+",'"+code+"','完工入库单',"+detno+",'"+fSourceBillNo+
                     "','"+map11.get("FNumber")+"','"+fBatchNo+"',"+fauxqty+",'"+fSecUnitID+"',"+fSecCoefficient+","+fSecQty+","+fAuxPlanPrice+","+fPlanAmount+","+fauxprice+"," +
-                    ""+famount+",'"+map12.get("FNumber")+"','"+map12.get("FName")+"','"+fnote+"',to_date('"+fKFDate+"'," +
+                    ""+famount+",'"+map12.get("FNumber")+"','"+map12.get("FName")+"','"+fnote+"',to_date('"+fEntrySelfA0248+"'," +
                     "'yyyy-MM-dd HH24:mi:ss'),to_date('"+fPeriodDate+"','yyyy-MM-dd HH24:mi:ss'),'"+location+"','"+fICMOBillNo+"')");
         }
         baseDao.execute(sqls);
@@ -220,9 +227,9 @@ public class MESServiceImpl implements MESService {
     }
 
     @Override
-    public ApiResult<String> makeDeleteCheck(HttpServletRequest request,String data) {
-        Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
-        Object maId = store.get("finterid");
+    public ApiResult<String> makeDeleteCheck(HttpServletRequest request) {
+        JSONObject jsonData = getJsonData(request);
+        Object maId = jsonData.get("finterid");
         // 只能删除在录入的单据!
         SqlRowList status =
                 baseDao.queryForRowSet("select ma_statuscode,ma_checkstatuscode from make where ma_id="+maId);
@@ -242,29 +249,34 @@ public class MESServiceImpl implements MESService {
     }
 
     @Override
-    public ApiResult<String> initMakeScrap(HttpServletRequest request, String data) {
-        JSONObject jsonObject = JSON.parseObject(data);
+    public ApiResult<String> initMakeScrap(HttpServletRequest request) {
+        Map<String, JSONArray> data = getData(request);
+        JSONArray jsonArray = data.get("main");
+        int id=0;
+        String code="";
         List<String> sqls = new ArrayList<>();
-        int id = baseDao.getSeqId("MAKESCRAP_SEQ");
-        String code = baseDao.sGetMaxNumber("MakeScrap", 2);
-        String fdateTime = StringUtil.nvl(jsonObject.get("FdateTime"),DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
-        String fwcCode = StringUtil.nvl(jsonObject.get("FwcCode"), "");
-        if ("".equals(fwcCode)){
-            return ApiResponse.failRsp("10021",request.getHeader("RequestId"),"工作中心不能为空!");
+        for (int i = 0; i <jsonArray.size() ; i++) {
+            JSONObject jsonObject = JSON.parseObject(StringUtil.nvl(jsonArray.get(i), ""));
+            id = baseDao.getSeqId("MAKESCRAP_SEQ");
+            code = baseDao.sGetMaxNumber("MakeScrap", 2);
+            String fdateTime = StringUtil.nvl(jsonObject.get("FdateTime"), DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+            String fwcCode = StringUtil.nvl(jsonObject.get("FwcCode"), "");
+            if ("".equals(fwcCode)) {
+                return ApiResponse.failRsp("10021", request.getHeader("RequestId"), "工作中心不能为空!");
+            }
+            String createdUser = StringUtil.nvl(jsonObject.get("createdUser"), "管理员");
+            String createdDateTime = StringUtil.nvl(jsonObject.get("createdDateTime"), DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+            String companyNo = StringUtil.nvl(jsonObject.get("companyNo"), "BYT");
+            String fremark = StringUtil.nvl(jsonObject.get("Fremark"), "");
+            sqls.add("insert into MakeScrap (ms_id,ms_code,ms_class,ms_statuscode,ms_status,ms_printstatuscode,ms_printstatus," +
+                    "ms_date,ms_wccode,ms_recordman,ms_indate,ms_cop,ms_remark) values (" + id + ",'" + code + "','生产报废单','ENTERING'," +
+                    "'在录入','UNPRINT','未打印',to_date('" + fdateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + fwcCode + "','" + createdUser +
+                    "',to_date('" + createdDateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + companyNo + "','" + fremark + "')");
         }
-        String createdUser = StringUtil.nvl(jsonObject.get("createdUser"), "管理员");
-        String createdDateTime = StringUtil.nvl(jsonObject.get("createdDateTime"),DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
-        String companyNo = StringUtil.nvl(jsonObject.get("companyNo"), "BYT");
-        String fremark = StringUtil.nvl(jsonObject.get("Fremark"), "");
-        sqls.add("insert into MakeScrap (ms_id,ms_code,ms_class,ms_statuscode,ms_status,ms_printstatuscode,ms_printstatus," +
-                "ms_date,ms_wccode,ms_recordman,ms_indate,ms_cop,ms_remark) values ("+id+",'"+code+"','生产报废单','ENTERING'," +
-                "'在录入','UNPRINT','未打印',to_date('"+fdateTime+"','yyyy-MM-dd HH24:mi:ss'),'"+fwcCode+"','"+createdUser+
-                "',to_date('"+createdDateTime+"','yyyy-MM-dd HH24:mi:ss'),'"+companyNo+"','"+fremark+"')");
-        String detail = StringUtil.nvl(jsonObject.get("detail"), "[{}]");
-        JSONArray jsonArray = JSON.parseArray(detail);
+        JSONArray array = data.get("detail");
         int detno=1;
-        for (int i = 0; i <jsonArray.size(); i++) {
-            JSONObject object = JSON.parseObject(StringUtil.nvl(jsonArray.get(i), "{}"));
+        for (int i = 0; i <array.size(); i++) {
+            JSONObject object = JSON.parseObject(StringUtil.nvl(array.get(i), "{}"));
             String lineId = StringUtil.nvl(object.get("lineId"), "");
             if ("".equals(lineId)){
                 return ApiResponse.failRsp("10022",request.getHeader("RequestId"),"工单明细ID不能为空!");
@@ -434,7 +446,8 @@ public class MESServiceImpl implements MESService {
             }
             String fSourceInterId = StringUtil.nvl(object.get("FSourceInterId"), "");
             String ficmoBillNo = StringUtil.nvl(object.get("FICMOBillNo"), "");
-            Object mmdetno = baseDao.getFieldDataByCondition("MakeMaterial", "mm_detno", "mm_id in (" + fSourceInterId+")");
+            Object lineId = object.get("lineId");
+            Object mmdetno = baseDao.getFieldDataByCondition("MakeMaterial", "mm_detno", "mm_id in (" + lineId+")");
             if(bccode!=null) {
                 sqls.add("insert into prodiodetail (pd_id,pd_piid,pd_inoutno,pd_piclass,pd_pdno,pd_prodcode," +
                         "pd_outqty,pd_whcode,pd_whname,pd_inwhcode,pd_inwhname) " +
@@ -468,8 +481,8 @@ public class MESServiceImpl implements MESService {
             Map<Object, Object> map5 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FBillerID")));
             id = baseDao.getSeqId("PRODINOUT_SEQ");
             code = baseDao.sGetMaxNumber("ProdInOut!Make!Return", 2);
-            sqls.add("insert into prodinout (pi_id,pi_inoutno,pi_class,pi_date,pi_statuscode,pi_status,pi_departmentcode,pi_departmentname,pi_emcode,pi_emname,pi_invostatuscode,pi_invostatus,pi_recordman,pi_recorddate,pi_printstatuscode,pi_printstatus) " +
-                    "values ("+id+",'"+code+"','生产退料单',to_date('"+jsonObject2.get("Fdate")+"','yyyy/MM/dd HH24:mi:ss'),'UNPOST','未过账','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map4.get("FNumber")+"','"+map4.get("FName")+"','ENTERING','在录入','"+map5.get("FName")+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy/MM/dd HH24:mi:ss'),'UNPRINT','未打印')");
+            sqls.add("insert into prodinout (pi_id,pi_inoutno,pi_class,pi_date,pi_statuscode,pi_status,pi_departmentcode,pi_departmentname,pi_emcode,pi_emname,pi_invostatuscode,pi_invostatus,pi_recordman,pi_recorddate,pi_printstatuscode,pi_printstatus,pi_type) " +
+                    "values ("+id+",'"+code+"','生产退料单',to_date('"+jsonObject2.get("Fdate")+"','yyyy/MM/dd HH24:mi:ss'),'UNPOST','未过账','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map4.get("FNumber")+"','"+map4.get("FName")+"','ENTERING','在录入','"+map5.get("FName")+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy/MM/dd HH24:mi:ss'),'UNPRINT','未打印','"+map2.get("FName")+"')");
         }
         JSONArray array = data.get("detail");
         int detno=1;
@@ -493,11 +506,12 @@ public class MESServiceImpl implements MESService {
             }
             String ficmoBillNo = StringUtil.nvl(object.get("FICMOBillNo"), "");
             String fBatchNo = StringUtil.nvl(object.get("FBatchNo"), "");
-
+            Object lineId = object.get("lineId");
+            Object mmdetno = baseDao.getFieldDataByCondition("MakeMaterial", "mm_detno", "mm_id in (" + lineId+")");
             sqls.add("insert into prodiodetail (pd_id,pd_piid,pd_inoutno,pd_piclass,pd_pdno,pd_prodcode," +
-                    "pd_inqty,pd_whcode,pd_whname,pd_remark,pd_batchcode,pd_ordercode) " +
+                    "pd_inqty,pd_whcode,pd_whname,pd_remark,pd_batchcode,pd_ordercode,pd_orderdetno) " +
                     "values (PRODIODETAIL_SEQ.nextval,"+id+",'"+code+"','生产退料单',"+detno+",'"+itemNo+
-                    "',"+qty+",'"+whcode+"','"+whname+"','"+fnote+"','"+fBatchNo+"','"+ficmoBillNo+"')");
+                    "',"+qty+",'"+whcode+"','"+whname+"','"+fnote+"','"+fBatchNo+"','"+ficmoBillNo+"',"+mmdetno+")");
             detno++;
         }
         baseDao.execute(sqls);
@@ -580,4 +594,15 @@ public class MESServiceImpl implements MESService {
         }
         return map;
     }
+
+    private JSONObject getJsonData(HttpServletRequest request){
+        JSONObject jsonObject=null;
+        try {
+            String data = PSHttpUtils.readRaw(request.getInputStream());
+            jsonObject = JSON.parseObject(data);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return jsonObject;
+    }
 }

+ 8 - 8
src/main/java/com/uas/eis/service/MESService.java

@@ -13,17 +13,17 @@ public interface MESService {
 
     /**
      * 获取ERP收料单
-     * @param data
+     * @param
      * @return
      */
-    ApiResult<String> checkVerifyApply(HttpServletRequest request, String data);
+    ApiResult<String> checkVerifyApply(HttpServletRequest request);
 
     /**
      * 确认入库
-     * @param data
+     * @param
      * @return
      */
-    ApiResult<String> purcCheckin(HttpServletRequest request,String data);
+    ApiResult<String> purcCheckin(HttpServletRequest request);
 
     /**
      * 成品半成品入库
@@ -33,17 +33,17 @@ public interface MESService {
 
     /**
      * 工单删除校验接口
-     * @param data
+     * @param
      * @return
      */
-    ApiResult<String> makeDeleteCheck(HttpServletRequest request,String data);
+    ApiResult<String> makeDeleteCheck(HttpServletRequest request);
 
     /**
      * 报废单
-     * @param data
+     * @param
      * @return
      */
-    ApiResult<String> initMakeScrap(HttpServletRequest request,String data);
+    ApiResult<String> initMakeScrap(HttpServletRequest request);
 
     /**
      * 原材料出库