Ver código fonte

设计变更评审单上传MES

koul 2 anos atrás
pai
commit
698aeb1d20

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

@@ -85,4 +85,9 @@ public class ERPController {
         return erpService.checkProdBomItem(data);
     }
 
+    @RequestMapping("/erp/updateChangeOrderByErp")
+    public Map<String, Object> updateChangeOrderByErp(String data){
+        return erpService.updateChangeOrderByErp(data);
+    }
+
 }

+ 121 - 0
src/main/java/com/uas/eis/entity/EcrMakeDetail.java

@@ -0,0 +1,121 @@
+package com.uas.eis.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+/**
+ * @author koul
+ * @email koul@usoftchina.com
+ * @date 2023-09-19 08:55
+ */
+public class EcrMakeDetail {
+    @JSONField(name = "journalNo")
+    private String ecr_code;
+    @JSONField(name = "prodNo")
+    private String emd_macode;
+    @JSONField(name = "type1")
+    private String ecr_tempg;
+    @JSONField(name = "changeContent")
+    private String ecr_tempb;
+    @JSONField(name = "changeContent2")
+    private String ecr_tempc;
+    @JSONField(name = "status")
+    private String status;
+    @JSONField(name = "mustFlag")
+    private String emd_ifzhix;
+    @JSONField(name = "location")
+    private String emd_controlpoint;
+    @JSONField(name = "rmk1")
+    private String emd_detno;
+    @JSONField(name = "mesUser")
+    private String mesUser;
+    @JSONField(name = "mesPwd")
+    private String mesPwd;
+
+    public String getEmd_ifzhix() {
+        return emd_ifzhix;
+    }
+
+    public void setEmd_ifzhix(String emd_ifzhix) {
+        this.emd_ifzhix = emd_ifzhix;
+    }
+
+    public String getEmd_controlpoint() {
+        return emd_controlpoint;
+    }
+
+    public void setEmd_controlpoint(String emd_controlpoint) {
+        this.emd_controlpoint = emd_controlpoint;
+    }
+
+    public String getEcr_code() {
+        return ecr_code;
+    }
+
+    public void setEcr_code(String ecr_code) {
+        this.ecr_code = ecr_code;
+    }
+
+    public String getEmd_macode() {
+        return emd_macode;
+    }
+
+    public void setEmd_macode(String emd_macode) {
+        this.emd_macode = emd_macode;
+    }
+
+    public String getEcr_tempg() {
+        return ecr_tempg;
+    }
+
+    public void setEcr_tempg(String ecr_tempg) {
+        this.ecr_tempg = ecr_tempg;
+    }
+
+    public String getEcr_tempb() {
+        return ecr_tempb;
+    }
+
+    public void setEcr_tempb(String ecr_tempb) {
+        this.ecr_tempb = ecr_tempb;
+    }
+
+    public String getEcr_tempc() {
+        return ecr_tempc;
+    }
+
+    public void setEcr_tempc(String ecr_tempc) {
+        this.ecr_tempc = ecr_tempc;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getEmd_detno() {
+        return emd_detno;
+    }
+
+    public void setEmd_detno(String emd_detno) {
+        this.emd_detno = emd_detno;
+    }
+
+    public String getMesUser() {
+        return mesUser;
+    }
+
+    public void setMesUser(String mesUser) {
+        this.mesUser = mesUser;
+    }
+
+    public String getMesPwd() {
+        return mesPwd;
+    }
+
+    public void setMesPwd(String mesPwd) {
+        this.mesPwd = mesPwd;
+    }
+}

+ 10 - 0
src/main/java/com/uas/eis/entity/Product.java

@@ -44,6 +44,8 @@ public class Product implements Serializable {
     private String pr_kind;
     @JSONField(name = "itemCategory1")
     private String pr_kind2;
+    @JSONField(name = "itemCategory2")
+    private String pr_acceptmethod;
     @JSONField(name = "erpLoc")
     private String pr_whcode;
     @JSONField(name = "mesUser")
@@ -53,6 +55,14 @@ public class Product implements Serializable {
     @JSONField(name = "flag")
     private int flag;
 
+    public String getPr_acceptmethod() {
+        return pr_acceptmethod;
+    }
+
+    public void setPr_acceptmethod(String pr_acceptmethod) {
+        this.pr_acceptmethod = pr_acceptmethod;
+    }
+
     public String getPr_kind2() {
         return pr_kind2;
     }

+ 2 - 0
src/main/java/com/uas/eis/service/ERPService.java

@@ -31,4 +31,6 @@ public interface ERPService {
      */
     Map<String, Object> checkProdBomItem(String data);
 
+    Map<String, Object> updateChangeOrderByErp(String data);
+
 }

+ 31 - 3
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -179,9 +180,36 @@ public class ERPServiceImpl implements ERPService {
         Map<String, Object> hashMap = new HashMap<>();
         hashMap.put("code", 0);
         hashMap.put("msg", "参数异常,请联系管理员!");
-        logger.info("data:" + data);
-        logger.info("JSONObject.parseObject(data):" + JSONObject.parseObject(data));
-        Map<String, Object> map = syncMESCheckBomItems(data.replace("null", "\"\""), tokenConfig.get("syncMakeMaterialCheck"));
+        System.err.println(JSONObject.parseObject(data));
+        System.err.println(JSON.toJSONString(data));
+        Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(JSONObject.parseObject(data)).replace("null", "\"\""), tokenConfig.get("syncMakeMaterialCheck"));
+        if (map != null) {
+            int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
+            hashMap.put("code", msgId);
+            hashMap.put("msg", map.get("msg"));
+        }
+        return hashMap;
+    }
+
+    @Override
+    public Map<String, Object> updateChangeOrderByErp(String data) {
+        Map<String, Object> hashMap = new HashMap<>();
+        hashMap.put("code", 0);
+        hashMap.put("msg", "参数异常,请联系管理员!");
+        List<Map<Object, Object>> maps = BaseUtil.parseGridStoreToMaps(data);
+        List<EcrMakeDetail> ecrMakeDetails = new ArrayList<>();
+        Map<String, Object> ma = new HashMap<>();
+        for (Map<Object, Object> store:maps) {
+            String s = store.get("STATUS") == null ? "" : store.get("STATUS").toString();
+            String status = "AUDITED".equals(s) ? "已审核" : "COMMITED".equals(s) ? "已提交" : "已删除";
+            EcrMakeDetail ecrMakeDetail = baseDao.getJdbcTemplate().queryForObject("select ecr_code,emd_macode,ecr_tempg,ecr_tempb,ecr_tempc,'" + status + "' status,case when nvl(emd_ifzhix,0)=0 then '否' else '是' end emd_ifzhix,emd_controlpoint,emd_detno||'' emd_detno from ecrmakedetail left join ecr on ecr_id=emd_ecrid where emd_id=?",
+                    new BeanPropertyRowMapper<EcrMakeDetail>(EcrMakeDetail.class), store.get("ID"));
+            ecrMakeDetail.setMesUser(tokenConfig.get("mesUser"));
+            ecrMakeDetail.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
+            ecrMakeDetails.add(ecrMakeDetail);
+        }
+        ma.put("Data",ecrMakeDetails);
+        Map<String, Object> map = syncMESCheckBomItems(JSON.toJSONString(ma, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("updateChangeOrderByErp"));
         if (map != null) {
             int msgId = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
             hashMap.put("code", msgId);

+ 17 - 10
src/main/java/com/uas/eis/service/Impl/MESServiceImpl.java

@@ -489,12 +489,12 @@ public class MESServiceImpl implements MESService {
                 return ApiResponse.failRsp("10025",requestId,"报废数量不能为空!");
             }
             //临时逻辑 重新计算报废数量
-            int coun = baseDao.getCountByCondition("make", "ma_code='" + prodNo + "' and to_char(ma_date,'yyyyMM')<'202212'");
-            if (baseDao.isDBSetting("MakeScrap","overQtySuccess")&&coun>0) {
-                qty = Double.parseDouble(StringUtil.nvl(baseDao.getFieldDataByCondition("makematerial left join make on mm_maid=ma_id", "nvl(mm_havegetqty,0)-nvl(mm_returnmqty,0)+nvl(mm_addqty,0)+nvl(mm_scrapqty,0)-nvl(mm_oneuseqty,0)*nvl(ma_madeqty,0)", "mm_id=" + lineId), "0"));
-                /*if (mmqty < qty) {
+            //int coun = baseDao.getCountByCondition("make", "ma_code='" + prodNo + "' and to_char(ma_date,'yyyyMM')<'202212'");
+            if (baseDao.isDBSetting("MakeScrap","overQtySuccess")) {
+                double mmqty = Double.parseDouble(StringUtil.nvl(baseDao.getFieldDataByCondition("makematerial left join make on mm_maid=ma_id", "nvl(mm_havegetqty,0)-nvl(mm_returnmqty,0)+nvl(mm_addqty,0)+nvl(mm_scrapqty,0)-nvl(mm_oneuseqty,0)*nvl(ma_madeqty,0)", "mm_id=" + lineId), "0"));
+                if (mmqty < qty) {
                     qty = mmqty;
-                }*/
+                }
             }
 
             String reason = StringUtil.nvl(object.get("reason"), "");
@@ -1217,13 +1217,17 @@ public class MESServiceImpl implements MESService {
             if (count<=0){
                 return ApiResponse.failRsp("10094",requestId,"工单:"+makeCode+"在ERP不存在,请核对!");
             }
-            Object[] data = baseDao.getFieldsDataByCondition("make", "ma_canmadeqty,ma_code,ma_qty,ma_madeqty,ma_tomadeqty", "ma_code='" + makeCode + "'");
+            Object[] data = baseDao.getFieldsDataByCondition("make", "ma_canmadeqty,ma_code,ma_qty,ma_madeqty,ma_tomadeqty,ma_id", "ma_code='" + makeCode + "'");
             if (data!=null&&data.length>0) {
-                Object canmadeqty = baseDao.getFieldDataByCondition("make", "(select min(case when NVL(mm_havegetqty,0)-NVL(mm_scrapqty,0)>=mm_qty then ma_qty else floor((nvl(mm_havegetqty, 0)-nvl(mm_scrapqty,0))*1.0/mm_oneuseqty)end) from makematerial where mm_maid=ma_id and nvl(mm_materialstatus,' ')=' ' and mm_oneuseqty>0 and mm_oneuseqty*ma_qty<=mm_qty+0.1 and nvl(mm_cp_user,0)=0)","ma_code='" + makeCode + "'");
                 Map<String, Object> map = new HashMap<>();
                 map.put("code",data[1]);
-                //备料齐套数量
-                map.put("canmadeqty",canmadeqty);
+                if (baseDao.checkIf("makematerial","nvl(mm_cp_user,0)=0 and nvl(mm_qty,0)>0 and mm_maid="+data[5])){
+                    Object canmadeqty = baseDao.getFieldDataByCondition("make", "(select min(case when NVL(mm_havegetqty,0)-NVL(mm_scrapqty,0)>=mm_qty then ma_qty else floor((nvl(mm_havegetqty, 0)-nvl(mm_scrapqty,0))*1.0/mm_oneuseqty)end) from makematerial where mm_maid=ma_id and nvl(mm_materialstatus,' ')=' ' and mm_oneuseqty>0 and mm_oneuseqty*ma_qty<=mm_qty+0.1 and nvl(mm_cp_user,0)=0)","ma_code='" + makeCode + "'");
+                    //备料齐套数量
+                    map.put("canmadeqty",canmadeqty);
+                }else {
+                    map.put("canmadeqty",data[2]);
+                }
                 //工单数量
                 map.put("qty",data[2]);
                 //完工数量
@@ -1441,11 +1445,14 @@ public class MESServiceImpl implements MESService {
         JSONArray detail = data.get("detail");
         if(detail!=null&&detail.size()>0){
             String macode = StringUtil.valueOf(JSON.parseObject(StringUtil.nvl(detail.get(0), "{}")).get("FICMOBillNo"));
-            Object[] data1 = baseDao.getFieldsDataByCondition("Make", "ma_tasktype,ma_id,ma_status", "ma_code in ('" + macode + "')");
+            Object[] data1 = baseDao.getFieldsDataByCondition("Make", "ma_tasktype,ma_id,ma_status,ma_finishstatus", "ma_code in ('" + macode + "')");
             if (data1!=null&&data1.length>0) {
                 if ("已结案".equals(StringUtil.nvl(data1[2], ""))){
                     return ApiResponse.failRsp("10041", requestId, "工单:"+macode+"在ERP已结案,不允许领料!");
                 }
+                if ("已完工".equals(StringUtil.nvl(data1[3], ""))){
+                    return ApiResponse.failRsp("10041", requestId, "工单:"+macode+"在ERP已完工,不允许领料!");
+                }
                 ma_tasktype = StringUtil.nvl(data1[0], "");
                 maid = Integer.parseInt(StringUtil.nvl(data1[1], "0"));
             }else {

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

@@ -46,7 +46,7 @@ public class ScheduleTaskServiceImpl implements ScheduleTaskService {
         try {
             SqlRowList rs = baseDao.queryForRowSet("select id from mes_product where status='W' order by id");
             while (rs.next()){
-                Product product = baseDao.getJdbcTemplate().queryForObject("select case when pr_kh_user='柏英特' or nvl(pr_kh_user,' ')=' ' then 'BYT' else nvl(cu_mescode,cu_code) end pr_kh_user,pr_code ,pr_detail ,replace(PR_SPEC,'''','''''') pr_spec,nvl(pr_unit,'PCS') pr_unit,nvl(pr_cop,'BYT') pr_cop,nvl(pr_version,'0') pr_version,case when nvl(pr_kind,'')='半成品' or nvl(pr_kind,' ')='成品' then  'product' else 'raw' end pr_serial,nvl(pr_validdays,'0') pr_validdays,pr_msdlevel ,pr_kind3 ,pr_f_115 ,pr_f_116 ,pr_f_102,pr_kind,flag,pr_statuscode,pr_status,pr_whcode,pr_kind2 from mes_product left join customer on pr_kh_user=cu_shortname where id=?",
+                Product product = baseDao.getJdbcTemplate().queryForObject("select case when pr_kh_user='柏英特' or nvl(pr_kh_user,' ')=' ' then 'BYT' else nvl(cu_mescode,cu_code) end pr_kh_user,pr_code ,pr_detail ,replace(PR_SPEC,'''','''''') pr_spec,nvl(pr_unit,'PCS') pr_unit,nvl(pr_cop,'BYT') pr_cop,nvl(pr_version,'0') pr_version,case when nvl(pr_kind,'')='半成品' or nvl(pr_kind,' ')='成品' then  'product' else 'raw' end pr_serial,nvl(pr_validdays,'0') pr_validdays,pr_msdlevel ,pr_kind3 ,pr_f_115 ,pr_f_116 ,pr_f_102,pr_kind,flag,pr_statuscode,pr_status,pr_whcode,pr_kind2,pr_acceptmethod from mes_product left join customer on pr_kh_user=cu_shortname where id=?",
                         new BeanPropertyRowMapper<Product>(Product.class), rs.getInt("id"));
                 //获取MES对应仓库
                 String prWhcode = product.getPr_whcode();

+ 3 - 3
src/main/java/com/uas/eis/task/ScheduleTask.java

@@ -50,7 +50,7 @@ public class ScheduleTask {
         logger.info("同步工单BOM开始");
         Date date = new Date();
         scheduleTaskService.syncMakeBaseDetails();
-        logger.info("同步工单BOM结束:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
+        logger.info("同步工单BOM:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
 
     }
 
@@ -61,7 +61,7 @@ public class ScheduleTask {
         logger.info("同步替代料开始");
         Date date = new Date();
         scheduleTaskService.syncMakematerialReplace();
-        logger.info("同步替代料结束:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
+        logger.info("同步替代料:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
 
     }
 
@@ -72,7 +72,7 @@ public class ScheduleTask {
         logger.info("同步客户资料开始");
         Date date = new Date();
         scheduleTaskService.syncCustomer();
-        logger.info("同步客户资料结束:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
+        logger.info("同步客户资料:用时" + ((System.currentTimeMillis() - date.getTime()) / 1000));
     }
 
 }

+ 2 - 1
src/main/resources/api_sign_key_mapping.properties

@@ -8,4 +8,5 @@ syncMakeBaseDetail=updateProdBomByErp
 syncUpdateReceiveByErp=updateReceiveByErp
 syncProdInOutMakeGive=updateProdFeedBomByErp
 syncCustomer=webEditCustomer
-syncMakeMaterialCheck=checkProdBomItem
+syncMakeMaterialCheck=checkProdBomItem
+updateChangeOrderByErp=updateChangeOrderByErp