koul пре 1 година
родитељ
комит
90681d42d1

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

@@ -80,14 +80,34 @@ public class ERPController {
         return erpService.syncProdInOutMakeGive(data);
     }
 
+    /**
+     * 是否允许修改BOM
+     * @param data
+     * @return
+     */
     @RequestMapping("/erp/checkProdBomItem")
     public Map<String, Object> checkProdBomItem(String data){
         return erpService.checkProdBomItem(data);
     }
 
+    /**
+     *
+     * @param data
+     * @return
+     */
     @RequestMapping("/erp/updateChangeOrderByErp")
     public Map<String, Object> updateChangeOrderByErp(String data){
         return erpService.updateChangeOrderByErp(data);
     }
 
+    /**
+     * 同步生产报废单
+     * @param data
+     * @return
+     */
+    @RequestMapping("/erp/syncMakeScrap")
+    public Map<String, Object> syncMakeScrap(String data){
+        return erpService.syncMakeScrap(data);
+    }
+
 }

+ 10 - 0
src/main/java/com/uas/eis/controller/MESController.java

@@ -187,4 +187,14 @@ public class MESController {
     public ApiResult<String> productWhQty(HttpServletRequest request){
         return mesService.productWhQty(request);
     }
+
+    /**
+     * 报废单确认
+     * @param
+     * @return
+     */
+    @RequestMapping("/mes/confirmMakeScrap")
+    public ApiResult<String> confirmMakeScrap(HttpServletRequest request){
+        return mesService.confirmMakeScrap(request);
+    }
 }

+ 68 - 0
src/main/java/com/uas/eis/entity/MakeScrap.java

@@ -0,0 +1,68 @@
+package com.uas.eis.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.util.List;
+
+public class MakeScrap {
+    @JSONField(name = "msId")
+    private int ms_id;
+    @JSONField(name = "msCode")
+    private String ms_code;
+    @JSONField(name = "mesUser")
+    private String mesUser;
+    @JSONField(name = "mesPwd")
+    private String mesPwd;
+    @JSONField(name = "flag")
+    private int flag;
+    @JSONField(name = "detail")
+    private List<MakeScrapDetail> detail;
+
+    public int getMs_id() {
+        return ms_id;
+    }
+
+    public void setMs_id(int ms_id) {
+        this.ms_id = ms_id;
+    }
+
+    public String getMs_code() {
+        return ms_code;
+    }
+
+    public void setMs_code(String ms_code) {
+        this.ms_code = ms_code;
+    }
+
+    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;
+    }
+
+    public List<MakeScrapDetail> getDetail() {
+        return detail;
+    }
+
+    public void setDetail(List<MakeScrapDetail> detail) {
+        this.detail = detail;
+    }
+}

+ 126 - 0
src/main/java/com/uas/eis/entity/MakeScrapDetail.java

@@ -0,0 +1,126 @@
+package com.uas.eis.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+
+public class MakeScrapDetail {
+    @JSONField(name = "scrapno")
+    private String ms_code;
+    @JSONField(name = "scrapid")
+    private int ms_id;
+    @JSONField(name = "scrapdetno")
+    private int md_detno;
+    @JSONField(name = "issw")
+    private int issw;
+    @JSONField(name = "prodno")
+    private String md_mmcode;
+    @JSONField(name = "proddetno")
+    private int md_mmdetno;
+    @JSONField(name = "itemno")
+    private String md_prodcode;
+    @JSONField(name = "oriitemno")
+    private String mm_prodcode;
+    @JSONField(name = "qty")
+    private int md_qty;
+    @JSONField(name = "mesUser")
+    private String mesUser;
+    @JSONField(name = "mesPwd")
+    private String mesPwd;
+    @JSONField(name = "actionflag")
+    private int flag;
+
+    public int getMs_id() {
+        return ms_id;
+    }
+
+    public void setMs_id(int ms_id) {
+        this.ms_id = ms_id;
+    }
+
+    public int getMd_detno() {
+        return md_detno;
+    }
+
+    public void setMd_detno(int md_detno) {
+        this.md_detno = md_detno;
+    }
+
+    public int getIssw() {
+        return issw;
+    }
+
+    public void setIssw(int issw) {
+        this.issw = issw;
+    }
+
+    public String getMs_code() {
+        return ms_code;
+    }
+
+    public void setMs_code(String ms_code) {
+        this.ms_code = ms_code;
+    }
+
+    public String getMd_mmcode() {
+        return md_mmcode;
+    }
+
+    public void setMd_mmcode(String md_mmcode) {
+        this.md_mmcode = md_mmcode;
+    }
+
+    public int getMd_mmdetno() {
+        return md_mmdetno;
+    }
+
+    public void setMd_mmdetno(int md_mmdetno) {
+        this.md_mmdetno = md_mmdetno;
+    }
+
+    public String getMd_prodcode() {
+        return md_prodcode;
+    }
+
+    public void setMd_prodcode(String md_prodcode) {
+        this.md_prodcode = md_prodcode;
+    }
+
+    public String getMm_prodcode() {
+        return mm_prodcode;
+    }
+
+    public void setMm_prodcode(String mm_prodcode) {
+        this.mm_prodcode = mm_prodcode;
+    }
+
+    public int getMd_qty() {
+        return md_qty;
+    }
+
+    public void setMd_qty(int md_qty) {
+        this.md_qty = md_qty;
+    }
+
+    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;
+    }
+}

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

@@ -33,4 +33,11 @@ public interface ERPService {
 
     Map<String, Object> updateChangeOrderByErp(String data);
 
+    /**
+     * 同步生产报废单
+     * @param data
+     * @return
+     */
+    Map<String, Object> syncMakeScrap(String data);
+
 }

+ 24 - 0
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -218,6 +218,30 @@ public class ERPServiceImpl implements ERPService {
         return hashMap;
     }
 
+    @Override
+    public Map<String, Object> syncMakeScrap(String data) {
+        Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
+        Object msId = store.get("ms_id");
+        String mesUser = tokenConfig.get("mesUser");
+        String mesPwd = MD5Util.encodeByMD5(tokenConfig.get("mesPwd"));
+        int flag = Integer.parseInt(StringUtil.nvl(store.get("flag"), "-1"));
+        Map<String, Object> hashMap = new HashMap<>();
+        hashMap.put("code", 0);
+        int count = baseDao.getCount("select count(1) from MakeScrap where ms_id="+msId);
+        if (count>0) {
+            List<MakeScrapDetail> makeScrapDetail = baseDao.getJdbcTemplate().query("select ms_code,ms_id,md_detno,1 issw,md_mmcode,md_mmdetno,md_prodcode,mm_prodcode,md_qty,"+mesUser+" mesUser,"+mesPwd+" mesPwd,"+flag+" flag from MakeScrap left join MakeScrapDetail on ms_id=md_msid left join MakeMaterial on mm_code=md_mmcode and mm_detno=md_mmdetno where ms_id="+ msId,new Object[]{},new BeanPropertyRowMapper<MakeScrapDetail>(MakeScrapDetail.class));
+            Map<String, Object> map = syncMESDeleteMake(JSON.toJSONString(makeScrapDetail, SerializerFeature.WriteMapNullValue).replace("null", "\"\""), tokenConfig.get("syncMakeScrap"));
+            hashMap.put("code", -1);
+            hashMap.put("msg", "MES异常,请联系MES处理!");
+            if (map != null&&map.isEmpty()) {
+                int code = Integer.parseInt(StringUtil.nvl(map.get("code"), "-1"));
+                hashMap.put("code", code);
+                hashMap.put("msg", map.get("msg"));
+            }
+        }
+        return hashMap;
+    }
+
     private ApiResult<String> syncMES(String params,String url) {
         try {
             logger.info("params:" + params);

+ 44 - 2
src/main/java/com/uas/eis/service/Impl/MESServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.eis.service.Impl;
 
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -7,7 +8,9 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.SqlRowList;
 import com.uas.eis.dto.Key;
-import com.uas.eis.entity.*;
+import com.uas.eis.entity.Employee;
+import com.uas.eis.entity.VerifyApply;
+import com.uas.eis.entity.VerifyApplyDetail;
 import com.uas.eis.sdk.entity.ApiResult;
 import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.MESService;
@@ -664,7 +667,7 @@ public class MESServiceImpl implements MESService {
             id = baseDao.getSeqId("PRODINOUT_SEQ");
             code = baseDao.sGetMaxNumber(caller, 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,pi_type,pi_mescode,pi_cardcode,pi_title,pi_custno) " +
-                    "values ("+id+",'"+code+"','"+piclass+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPOST','未过账','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map3.get("FNumber")+"','"+map3.get("FName")+"','AUDITED','已审核','"+map5.get("FName")+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPRINT','未打印','"+map2.get("FName")+"','"+fSelBillNo+"','"+fCustCode+"','"+cuname+"','"+fCustNo+"')");
+                    "values ("+id+",'"+code+"','"+piclass+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPOST','未过账','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map3.get("FNumber")+"','"+map3.get("FName")+"','ENTERING','在录入','"+map5.get("FName")+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPRINT','未打印','"+map2.get("FName")+"','"+fSelBillNo+"','"+fCustCode+"','"+cuname+"','"+fCustNo+"')");
         }
         JSONArray array = data.get("detail");
         int detno=1;
@@ -1695,6 +1698,45 @@ public class MESServiceImpl implements MESService {
         }
     }
 
+    @Override
+    public ApiResult<String> confirmMakeScrap(HttpServletRequest request) {
+        String requestId = request.getHeader("RequestId");
+        JSONObject data = getJsonData(request);
+        if (data != null) {
+            String apCode = null;
+            String msclass = "生产报废单";
+            Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_code=?", new BeanPropertyRowMapper<Employee>(Employee.class), "mes");
+            String msId = StringUtil.nvl(data.get("scrapid"), "");
+            baseDao.updateByCondition("MakeScrapdetail", "md_status=99", "md_msid=" + msId);
+            List<Object[]> objects = baseDao.getFieldsDatasByCondition("MakeScrapdetail left join make on ma_code=md_mmcode ", new String[]{
+                    "ma_id", "md_mmdetno", "md_qty", "md_prodcode"}, " md_msid=" + msId);
+            for (Object[] object : objects) {
+                baseDao.updateByCondition("Makematerial ", "mm_scrapqty =nvl(mm_scrapqty,0)+" + object[2], "mm_detno=" + object[1]
+                        + " and mm_maid=" + object[0]);
+                baseDao.updateByCondition("Makematerial ", "mm_repscrapqty =nvl(mm_repscrapqty,0)+" + object[2], "mm_detno=" + object[1]
+                        + " and mm_maid=" + object[0] + " and mm_prodcode<>'" + object[3] + "'");
+                baseDao.updateByCondition("Makematerialreplace ", "mp_scrapqty =nvl(mp_scrapqty,0)+" + object[2], " mp_maid=" + object[0]
+                        + " and mp_mmdetno=" + object[1] + " and mp_prodcode='" + object[3] + "'");
+            }
+            // 执行审核操作
+            baseDao.updateByCondition("MakeScrap", "ms_status='已确认',ms_statuscode='CONFIRMED'", "ms_id=" + msId);
+            // 记录操作
+            baseDao.execute("INSERT INTO MessageLog(ml_id,ml_date,ml_man,ml_content,ml_result,ml_search) VALUES (MessageLog_seq.nextval,sysdate,'mes','审核操作','审核成功','MakeScrap|ms_id=" + msId + "')");
+            //生成超损请购
+            int apId = baseDao.getSeqId("APPLICATION_SEQ");
+            apCode = baseDao.sGetMaxNumber("Application", 2);
+            Object dpcode = baseDao.getFieldDataByCondition("MakeScrapDetail", "min(md_department)", "md_msid=" + msId);
+            baseDao.execute("insert into Application (ap_id,ap_code,ap_kind,ap_date,ap_statuscode,ap_status,ap_pleamanname,ap_pleamanid,ap_recorder,ap_recorderid,ap_recorddate,ap_departcode,ap_departname,ap_source,ap_sourceid,ap_printstatuscode,ap_printstatus,ap_remark,ap_bfcode_user) values " +
+                    " select " + apId + ",'" + apCode + "','超损请购',sysdate,'ENTERING','在录入','" + employee.getEm_name() + "'," + employee.getEm_id() + ",'" + employee.getEm_name() + "'," + employee.getEm_id() + ",sysdate,'" + dpcode + "',dp_name,'" + msclass + "',ms_id,'UNPRINT','未打印','MES生产报废单确认生成',ms_code from MakeScrap,department where dp_code='" + dpcode + "' and ms_id=" + msId);
+            baseDao.execute("insert into applicationdetail (ad_id,ad_apid,ad_code,ad_detno,ad_prodcode,ad_qty,ad_use,ad_statuscode,ad_status,ad_source,ad_sourcecode,ad_remark,ad_zzcode_user,ad_zzxh_user,ad_sacode,ad_sadetno) " +
+                    "select APPLICATIONDETAIL_SEQ.nextval," + apId + ",'" + apCode + "',md_detno,md_prodcode,md_qty,md_reason,'ENTERING','在录入','" + msclass + "',md_code,'MES生产报废单审核生成',md_mmcode,md_mmdetno,ma_salecode,ma_saledetno from MakeScrapdetail left join make on md_mmcode=ma_code where md_msid=" + msId);
+            baseDao.execute("update applicationdetail set ad_kcqty=(select ad_qty/(case when nvl(pr_purcrate,0)=0 then 1 else pr_purcrate end) from product where pr_code=ad_prodcode) where ad_apid=" + apId);
+            return ApiResponse.successRsp("0", requestId, "请购单:" + apCode + ",请在ERP查看!");
+        }else {
+            return ApiResponse.failRsp("10074",requestId,"参数异常!");
+        }
+    }
+
     private Map<String, JSONArray> getData(HttpServletRequest request){
         Map<String, JSONArray> map = new HashMap<>();
         try {

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

@@ -130,4 +130,11 @@ public interface MESService {
      */
     ApiResult<String> productWhQty(HttpServletRequest request);
 
+    /**
+     * 生产报废单确认
+     * @param request
+     * @return
+     */
+    ApiResult<String> confirmMakeScrap(HttpServletRequest request);
+
 }

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

@@ -9,4 +9,5 @@ syncUpdateReceiveByErp=updateReceiveByErp
 syncProdInOutMakeGive=updateProdFeedBomByErp
 syncCustomer=webEditCustomer
 syncMakeMaterialCheck=checkProdBomItem
-updateChangeOrderByErp=updateChangeOrderByErp
+updateChangeOrderByErp=updateChangeOrderByErp
+syncMakeScrap=updateScrappedItemByErp