Browse Source

客户资料同步和工单明细校验

koul 3 years ago
parent
commit
e169fc7dba

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

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

+ 9 - 0
src/main/java/com/uas/eis/core/support/SpringDynamicCronTask.java

@@ -69,6 +69,15 @@ public class SpringDynamicCronTask implements SchedulingConfigurer {
 					e.printStackTrace();
 					e.printStackTrace();
 				}
 				}
 			}, env.getProperty("Task.syncMakematerialReplaceCron"));
 			}, env.getProperty("Task.syncMakematerialReplaceCron"));
+			taskRegistrar.addCronTask(() -> {
+				//业务逻辑
+				try {
+					Method method = scheduleTask.getClass().getMethod(env.getProperty("Task.syncCustomerMethod"));
+					method.invoke(scheduleTask);
+				}catch (Exception e){
+					e.printStackTrace();
+				}
+			}, env.getProperty("Task.syncCustomerCron"));
 		}
 		}
 	}
 	}
 }
 }

+ 107 - 0
src/main/java/com/uas/eis/entity/Customer.java

@@ -0,0 +1,107 @@
+package com.uas.eis.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+
+public class Customer implements Serializable {
+
+    @JSONField(name = "custId")
+    private int cu_id;
+//oldNo   custNo   custName  nameAlias companyNo
+    @JSONField(name = "oldNo")
+    private String cu_oldcode;
+
+    @JSONField(name = "custNo")
+    private String cu_code;
+
+    @JSONField(name = "custName")
+    private String cu_name;
+
+    @JSONField(name = "nameAlias")
+    private String cu_shortname;
+
+    @JSONField(name = "companyNo")
+    private String cu_cop;
+
+    @JSONField(name = "mesUser")
+    private String mesUser;
+
+    @JSONField(name = "mesPwd")
+    private String mesPwd;
+
+    @JSONField(name = "flag")
+    private int flag;
+
+    public int getCu_id() {
+        return cu_id;
+    }
+
+    public void setCu_id(int cu_id) {
+        this.cu_id = cu_id;
+    }
+
+    public String getCu_oldcode() {
+        return cu_oldcode;
+    }
+
+    public void setCu_oldcode(String cu_oldcode) {
+        this.cu_oldcode = cu_oldcode;
+    }
+
+    public String getCu_code() {
+        return cu_code;
+    }
+
+    public void setCu_code(String cu_code) {
+        this.cu_code = cu_code;
+    }
+
+    public String getCu_name() {
+        return cu_name;
+    }
+
+    public void setCu_name(String cu_name) {
+        this.cu_name = cu_name;
+    }
+
+    public String getCu_shortname() {
+        return cu_shortname;
+    }
+
+    public void setCu_shortname(String cu_shortname) {
+        this.cu_shortname = cu_shortname;
+    }
+
+    public String getCu_cop() {
+        return cu_cop;
+    }
+
+    public void setCu_cop(String cu_cop) {
+        this.cu_cop = cu_cop;
+    }
+
+    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;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+}

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

@@ -23,4 +23,12 @@ public interface ERPService {
     Map<String, Object> syncDeleteMake(String data);
     Map<String, Object> syncDeleteMake(String data);
 
 
     ApiResult<String> syncProdInOutMakeGive(String data);
     ApiResult<String> syncProdInOutMakeGive(String data);
+
+    /**
+     * 更新BOM明细前限制
+     * @param data
+     * @return
+     */
+    Map<String, Object> checkProdBomItem(String data);
+
 }
 }

+ 45 - 2
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -119,7 +119,7 @@ public class ERPServiceImpl implements ERPService {
             if (map != null) {
             if (map != null) {
                 int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
                 int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
                 if (code == 0) {
                 if (code == 0) {
-                    List<MakeMaterial> makeMaterials = baseDao.getJdbcTemplate().query("select mm_code,erpid,mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') 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,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm_prodcode mm_repprodcode,mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,0 rpid from mes_makematerial left join make on ma_id=mm_maid left join Product on mm_prodcode=pr_code left join bom on bo_id=mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm_detno where mm_maid=" + maId + " order by mm_detno", new Object[]{},new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class));
+                    List<MakeMaterial> makeMaterials = baseDao.getJdbcTemplate().query("select mm_code,erpid,mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') 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,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm_prodcode mm_repprodcode,mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,0 rpid from mes_makematerial left join make on ma_id=mm_maid left join Product on mm_prodcode=pr_code left join bom on bo_id=mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm_detno where erpid is not null and mm_maid=" + maId + " order by mm_detno", new Object[]{},new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class));
                     for (MakeMaterial makeMaterial: makeMaterials) {
                     for (MakeMaterial makeMaterial: makeMaterials) {
                         makeMaterial.setMesUser(tokenConfig.get("mesUser"));
                         makeMaterial.setMesUser(tokenConfig.get("mesUser"));
                         makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
                         makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
@@ -131,7 +131,7 @@ public class ERPServiceImpl implements ERPService {
                             hashMap.put("msg", map1.get("msg"));
                             hashMap.put("msg", map1.get("msg"));
                         }
                         }
                     }
                     }
-                    List<MakeMaterial> makeMaterials2 = baseDao.getJdbcTemplate().query("select mm.mm_code,mm.erpid,mr.mp_prodcode mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,mm.mm_oneuseqty qty,mr.mp_canuseqty mm_qty,mm.mm_oneuseqty,'alternative' type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm.mm_prodcode mm_repprodcode,mm.mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,mr.erpid rpid from mes_makematerialreplace mr left join mes_makematerial mm on mr.mp_mmid=mm.erpid left join make on mm.mm_maid=ma_id left join Product on mr.mp_prodcode=pr_code left join bom on bo_id=mm.mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm.mm_detno where mr.mp_maid="+ maId,new Object[]{},new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class));
+                    List<MakeMaterial> makeMaterials2 = baseDao.getJdbcTemplate().query("select mm.mm_code,mm.erpid,mr.mp_prodcode mm_prodcode,pr_detail,replace(PR_SPEC,'''','''''') pr_spec,pr_unit,mm.mm_oneuseqty qty,mr.mp_canuseqty mm_qty,mm.mm_oneuseqty,'alternative' type,bo_recorder,to_char(bo_date,'yyyy-MM-dd HH24:mi:ss') bo_date,0 bo_version,nvl(bo_cop,'BYT') bo_cop,mm.mm_prodcode mm_repprodcode,mm.mm_balance,(select nvl(cu_mescode,'BYT') from Product left join customer on pr_kh_user=cu_shortname where pr_code=ma_prodcode) ma_custcode,to_char(mc_indate,'yyyy-MM-dd HH24:mi:ss') mc_indate,mc_recorder," + flag + " flag,mr.erpid rpid from mes_makematerialreplace mr left join mes_makematerial mm on mr.mp_mmid=mm.erpid left join make on mm.mm_maid=ma_id left join Product on mr.mp_prodcode=pr_code left join bom on bo_id=mm.mm_bomid left join (select max(mc_indate) mc_indate,max(mc_recorder) mc_recorder,max(md_mmdetno) md_mmdetno,max(md_makecode) md_makecode from MakeMaterialChangeDet left join MakeMaterialChange on mc_id=md_mcid) on md_makecode=ma_code and md_mmdetno=mm.mm_detno where mm.erpid is not null and mr.mp_maid="+ maId,new Object[]{},new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class));
                     for (MakeMaterial makeMaterial: makeMaterials2) {
                     for (MakeMaterial makeMaterial: makeMaterials2) {
                         makeMaterial.setMesUser(tokenConfig.get("mesUser"));
                         makeMaterial.setMesUser(tokenConfig.get("mesUser"));
                         makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
                         makeMaterial.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
@@ -174,6 +174,22 @@ public class ERPServiceImpl implements ERPService {
         }
         }
     }
     }
 
 
+    @Override
+    public Map<String, Object> checkProdBomItem(String data) {
+        Map<String, Object> hashMap = new HashMap<>();
+        hashMap.put("code", 0);
+        hashMap.put("msg", "参数异常,请联系管理员!");
+        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;
+    }
+
     private ApiResult<String> syncMES(String params,String url) {
     private ApiResult<String> syncMES(String params,String url) {
         try {
         try {
             logger.info("params:" + params);
             logger.info("params:" + params);
@@ -219,4 +235,31 @@ public class ERPServiceImpl implements ERPService {
         }
         }
         return map;
         return map;
     }
     }
+
+
+    private Map<String, Object> syncMESCheckBomItems(String params,String url){
+        Map<String, Object> map = new HashMap<>();
+        map.put("code",-1);
+        logger.info("params:"+params);
+        try {
+            String post = PSHttpUtils.sendPost(tokenConfig.get("mesHttp") + url, params);
+            logger.info("post:"+post);
+            JSONObject jsonObject = JSON.parseObject(post);
+            int code = jsonObject.getIntValue("msgId");
+            if (code==0){
+                map.put("code",code);
+                map.put("msg","同步MES成功");
+            }else if(code==1){
+                map.put("code",code);
+                map.put("msg",jsonObject.getString("msgStr"));
+            }else {
+                map.put("msg","接口调用异常,错误代码:"+code+",请联系MES处理!");
+            }
+        }catch (Exception e){
+            map.put("msg","接口调用异常,异常信息:"+e.getMessage()+",请联系MES处理!");
+            logger.info("异常信息:"+e.getMessage());
+            e.printStackTrace();
+        }
+        return map;
+    }
 }
 }

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

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.uas.eis.core.support.TokenProperties;
 import com.uas.eis.core.support.TokenProperties;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.SqlRowList;
 import com.uas.eis.dao.SqlRowList;
+import com.uas.eis.entity.Customer;
 import com.uas.eis.entity.Make;
 import com.uas.eis.entity.Make;
 import com.uas.eis.entity.MakeMaterial;
 import com.uas.eis.entity.MakeMaterial;
 import com.uas.eis.entity.Product;
 import com.uas.eis.entity.Product;
@@ -20,6 +21,7 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -246,6 +248,46 @@ public class ScheduleTaskServiceImpl implements ScheduleTaskService {
         }
         }
     }
     }
 
 
+    @Override
+    public void syncCustomer() {
+        try {
+            List<Customer> customers = baseDao.query("select cu_id,nvl(cu_mescode,cu_code) cu_oldcode,nvl(cu_mescode,cu_code) cu_code,cu_name,cu_shortname,nvl(cu_cop,'BYT') cu_cop,flag from mes_customer where status='W' order by cu_id", Customer.class);
+            if (customers!=null&&customers.size()>0){
+                for (Customer customer:customers) {
+                    customer.setMesUser(tokenConfig.get("mesUser"));
+                    customer.setMesPwd(MD5Util.encodeByMD5(tokenConfig.get("mesPwd")));
+                    Map<String, Object> map = syncMES(JSON.toJSONString(customer, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncCustomer"));
+                    if (map!=null){
+                        int code = Integer.parseInt(StringUtil.nvl(map.get("msgId"), "-1"));
+                        if (code==0){
+                            baseDao.updateByCondition("mes_customer","status='D'","status='W' and cu_id="+customer.getCu_id());
+                        }else {
+                            int flag = customer.getFlag();
+                            if (flag == 1) {
+                                customer.setFlag(0);
+                            } else if (flag == 0) {
+                                customer.setFlag(1);
+                            }
+                            Map<String, Object> map1 = syncMES(JSON.toJSONString(customer, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncCustomer"));
+                            if (map1!=null){
+                                int code1 = Integer.parseInt(StringUtil.nvl(map.get("msgId"), "-1"));
+                                if (code1==0){
+                                    baseDao.updateByCondition("mes_customer","status='D'","status='W' and cu_id="+customer.getCu_id());
+                                }else {
+                                    baseDao.updateByCondition("mes_customer","status='F'","status='W' and cu_id="+customer.getCu_id());
+                                    baseDao.execute("insert into meserrorlog (mel_id,mel_url,mel_error,mel_indate,mel_djcode,mel_type) values (MESERRORLOG_SEQ.NEXTVAL,'"+tokenConfig.get("syncCustomer")+"','"+StringUtil.nvl(map.get("msgStr"),"")+"',sysdate,'"+customer.getCu_code()+"','客户资料')");
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }catch (Exception e){
+            logger.info("客户资料异常信息:"+e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
     private Map<String, Object> syncMES(String params,String url){
     private Map<String, Object> syncMES(String params,String url){
         Map<String, Object> map = new HashMap<>();
         Map<String, Object> map = new HashMap<>();
         map.put("code",-1);
         map.put("code",-1);

+ 17 - 0
src/main/java/com/uas/eis/service/ScheduleTaskService.java

@@ -7,13 +7,30 @@ package com.uas.eis.service;
  */
  */
 public interface ScheduleTaskService {
 public interface ScheduleTaskService {
 
 
+    /**
+     * 同步物料资料
+     */
     void syncProducts();
     void syncProducts();
 
 
+    /**
+     * 同步工单
+     */
     void syncMakeBases();
     void syncMakeBases();
 
 
+    /**
+     * 同步工单BOM
+     */
     void syncMakeBaseDetails();
     void syncMakeBaseDetails();
 
 
+    /**
+     * 同步替代料
+     */
     void syncMakematerialReplace();
     void syncMakematerialReplace();
 
 
+    /**
+     * 同步客户资料
+     */
+    void syncCustomer();
+
 
 
 }
 }

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

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

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

@@ -6,4 +6,6 @@ syncProduct=updateItemByErp
 syncMakeBase=updateProdByErp
 syncMakeBase=updateProdByErp
 syncMakeBaseDetail=updateProdBomByErp
 syncMakeBaseDetail=updateProdBomByErp
 syncUpdateReceiveByErp=updateReceiveByErp
 syncUpdateReceiveByErp=updateReceiveByErp
-syncProdInOutMakeGive=updateProdFeedBomByErp
+syncProdInOutMakeGive=updateProdFeedBomByErp
+syncCustomer=webEditCustomer
+syncMakeMaterialCheck=checkProdBomItem

+ 4 - 1
src/main/resources/application-prod.yml

@@ -4,7 +4,7 @@ spring:
         driverClassName: oracle.jdbc.OracleDriver
         driverClassName: oracle.jdbc.OracleDriver
         username: BOYT_TEST
         username: BOYT_TEST
         password: select!#%*(
         password: select!#%*(
-        url: jdbc:oracle:thin:@192.168.16.243:1521:orcl
+        url: jdbc:oracle:thin:@218.17.190.142:5521:orcl
 server:
 server:
     tomcat:
     tomcat:
         uri_encoding: UTF-8
         uri_encoding: UTF-8
@@ -21,6 +21,9 @@ Task:
     SyncMakeBaseDetailsCron: 0 0/1 * * * ?
     SyncMakeBaseDetailsCron: 0 0/1 * * * ?
     syncMakematerialReplaceMethod: syncMakematerialReplace
     syncMakematerialReplaceMethod: syncMakematerialReplace
     syncMakematerialReplaceCron: 0 0/1 * * * ?
     syncMakematerialReplaceCron: 0 0/1 * * * ?
+    syncCustomerMethod: syncCustomer
+    syncCustomerCron: 0 0/1 * * * ?
+
 
 
 action:
 action:
     api_action: /EIS/api,/EIS/mes,/EIS/erp
     api_action: /EIS/api,/EIS/mes,/EIS/erp