Переглянути джерело

生产退料单增加工单号

koul 4 роки тому
батько
коміт
dee853f2a1
1 змінених файлів з 84 додано та 11 видалено
  1. 84 11
      src/main/java/com/uas/eis/service/Impl/MESServiceImpl.java

+ 84 - 11
src/main/java/com/uas/eis/service/Impl/MESServiceImpl.java

@@ -648,27 +648,51 @@ public class MESServiceImpl implements MESService {
         JSONArray jsonArray = data.get("main");
         int id=0;
         String code="";
+        int tlid=0;
+        String tlcode = "";
+        String ma_tasktype=null;
+        int maid=0;
+        String tlpiclass = "生产退料单", tlcaller = "ProdInOut!Make!Return", bcpiclass = "拨出单", bccaller = "ProdInOut!AppropriationOut";
         List<String> sqls = new ArrayList<>();
+        int frob=99;
         for (int i = 0; i <jsonArray.size() ; i++) {
             Object obj = jsonArray.get(i);
             JSONObject jsonObject2 = JSON.parseObject(StringUtil.nvl(obj, ""));
-            Map<Object, Object> map1 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FDeptID")));
-            Map<Object, Object> map2 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FPurposeID")));
-            Map<Object, Object> map3 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FFManagerID")));
-            Map<Object, Object> map4 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FSManagerID")));
-            Map<Object, Object> map5 = JSONUtil.toMap(StringUtil.valueOf(jsonObject2.get("FBillerID")));
+            Map<Object, Object> map1 = JSONUtil.toMap(StringUtil.nvl(jsonObject2.get("FDeptID"),"{}"));
+            Map<Object, Object> map2 = JSONUtil.toMap(StringUtil.nvl(jsonObject2.get("FPurposeID"),"{}"));
+            Map<Object, Object> map3 = JSONUtil.toMap(StringUtil.nvl(jsonObject2.get("FFManagerID"),"{}"));
+            Map<Object, Object> map4 = JSONUtil.toMap(StringUtil.nvl(jsonObject2.get("FSManagerID"),"{}"));
+            Map<Object, Object> map5 = JSONUtil.toMap(StringUtil.nvl(jsonObject2.get("FBillerID"),"{}"));
+            frob = Integer.parseInt(StringUtil.nvl(jsonObject2.get("FROB"), "99"));
+            String macode = StringUtil.valueOf(jsonObject2.get("FICMOBillNo"));
+            ma_tasktype = StringUtil.nvl(baseDao.getFieldDataByCondition("Make", "ma_tasktype",
+                    "ma_code in ('" + macode + "')"),"");
+            maid = Integer.parseInt(StringUtil.nvl(baseDao.getFieldDataByCondition("Make", "ma_id",
+                    "ma_code in ('" + macode + "')"),"0"));
+            if ("OS".equals(ma_tasktype)) {
+                tlpiclass = "委外退料单";
+                tlcaller = "ProdInOut!OutsideReturn";
+            }
+            if (frob==0){
+                tlid = baseDao.getSeqId("PRODINOUT_SEQ");
+                tlcode = baseDao.sGetMaxNumber(tlcaller, 2);
+                sqls.add("INSERT INTO ProdInOut(pi_id, pi_inoutno, pi_date, pi_class,pi_invostatus,pi_invostatuscode," +
+                        "pi_recordman, pi_recorddate, pi_status, pi_statuscode,pi_updatedate,pi_updateman," +
+                        "pi_printstatuscode,pi_printstatus,pi_departmentcode,pi_departmentname,pi_emcode,pi_emname) VALUES ("+tlid+",'"+tlcode+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'"+tlpiclass+"','在录入','ENTERING','"+map5.get("FName")+"',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPOST','未过账',sysdate,'"+map5.get("FName")+"','UNPRINT','未打印','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map4.get("FNumber")+"','"+map4.get("FName")+"')");
+            }
             id = baseDao.getSeqId("PRODINOUT_SEQ");
-            code = baseDao.sGetMaxNumber("ProdInOut!AppropriationOut", 2);
+            code = baseDao.sGetMaxNumber(bccaller, 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_inoutman,pi_type) " +
-                    "values ("+id+",'"+code+"','拨出单',to_date('"+jsonObject2.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss')," +
+                    "values ("+id+",'"+code+"','"+bcpiclass+"',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','未打印','"+map3.get("FName")+"','库存转移')");
         }
         Object[] warehouses=null;
         Object[] warehouses2=null;
         JSONArray array = data.get("detail");
         int detno=1;
+        int det=1;
         for (int i = 0; i <array.size(); i++) {
             JSONObject object = JSON.parseObject(StringUtil.nvl(array.get(i), "{}"));
             Map<Object, Object> map = JSONUtil.toMap(StringUtil.valueOf(object.get("FItemID")));
@@ -711,12 +735,42 @@ 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+")");
+            int count1 = baseDao.getCount("select count(1) from MakeMaterial where mm_id in (" + lineId + ")");
+            if (count1<=0){
+                return ApiResponse.failRsp("10075",request.getHeader("RequestId"),"工单BOM不存在或ID不一致,请联系管理员处理!");
+            }
+            Object[] objs = baseDao.getFieldsDataByCondition("Make left join MakeMaterial on ma_id=mm_maid", new String[] { "mm_id", "mm_code",
+                    "mm_detno", "mm_mdcode", "mm_prodcode", "mm_wccode","mm_havegetqty","ma_qty","ma_tomadeqty",
+                            "ma_madeqty","mm_oneuseqty","mm_qty"},
+                    "mm_id in (" + lineId+")");
+            if (frob==0) {
+                Object prid = baseDao.getFieldDataByCondition("Product", "pr_id", "pr_code='" + itemNo + "'");
+                int seqId = baseDao.getSeqId("PRODIODETAIL_SEQ");
+                sqls.add("INSERT INTO ProdIODetail(pd_id, pd_piid, pd_inoutno, pd_piclass, pd_pdno, pd_status," +
+                        "pd_auditstatuscode,pd_auditstatus,pd_prodcode,pd_ordercode, pd_orderdetno,pd_macode,pd_madetno, " +
+                        "pd_plancode, pd_wccode, pd_orderid, pd_prodid," +
+                        "pd_whcode,pd_whname) VALUES ("+seqId+","+tlid+",'"+tlcode+"','"+tlpiclass+"',"+det+"," +
+                        "0,'ENTERING','在录入','"+itemNo+"','"+ficmoBillNo+"',"+objs[2]+",'"+ficmoBillNo+"',"+objs[2]+",'"+objs[3]+"','"+objs[5]+"',"+lineId+","+prid+",'"+warehouses[0]+"','"+warehouses[1]+"')");
+                det++;
+                sqls.add("update prodiodetail set pd_inqty=(select nvl(mm_havegetqty,0)-nvl(ma_tomadeqty,0)*nvl" +
+                        "(mm_oneuseqty,0) from MakeMaterial left join Make on ma_id=mm_maid where mm_id="+objs[0]+") " +
+                        "where pd_id="+seqId);
+
+            }
             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) " +
-                    "values (PRODIODETAIL_SEQ.nextval,"+id+",'"+code+"','拨出单',"+detno+",'"+itemNo+"',"+qty+",'"+warehouses[0]+"','"+warehouses[1]+"','"+warehouses2[0]+"','"+warehouses2[1]+"')");
+                    "pd_outqty,pd_whcode,pd_whname,pd_inwhcode,pd_inwhname,pd_macode,pd_madetno) " +
+                    "values (PRODIODETAIL_SEQ.nextval,"+id+",'"+code+"','"+bcpiclass+"',"+detno+",'"+itemNo+"',"+qty+",'"+warehouses[0]+"','"+warehouses[1]+"','"+warehouses2[0]+"','"+warehouses2[1]+"','"+ficmoBillNo+"',"+objs[2]+")");
             detno++;
         }
+        if (frob==0){
+            sqls.add("update prodiodetail set (pd_mcid,pd_jobcode)=(select mc_id,mm_mdcode from MakeMaterial,makecraft where pd_orderdetno=mm_detno and pd_ordercode=mm_code and mm_mdcode=mc_code) where pd_piid="
+                    + tlid);
+            sqls.add("update prodiodetail set pd_purcinqty=Round(Pd_Inqty/nvl((Select case when nvl(Pr_Purcrate,0)=0 then 1 else Pr_Purcrate end From Product Where Pd_Prodcode=Pr_Code),1),8) where pd_piid="
+                    + tlid);
+        }
+        if ("OS".equals(ma_tasktype)) {
+            baseDao.execute("update prodinout set(pi_cardcode,pi_title,pi_receivecode,pi_receivename) = (select max(ma_vendcode),max(ma_vendname),max(nvl(ma_apvendcode,ma_vendcode)),max(nvl(ma_apvendname,ma_vendname)) from make where ma_id in (" + maid + ")) where pi_id=" + tlid);
+        }
         if (warehouses!=null){
             sqls.add("update prodinout set pi_whcode='"+warehouses[0]+"',pi_whname='"+warehouses[1]+"' where pi_id="+id);
         }
@@ -724,7 +778,26 @@ public class MESServiceImpl implements MESService {
             sqls.add("update prodinout set pi_purpose='"+warehouses2[0]+"',pi_purposename='"+warehouses2[1]+"' where pi_id="+id);
         }
         baseDao.execute(sqls);
-        return ApiResponse.successRsp("0",request.getHeader("RequestId"),"生产退料单:"+code+",请在ERP查看!");
+        baseDao.execute("delete from prodiodetail where pd_inqty=0 and pd_piclass='"+tlpiclass+"' and pd_piid="+tlid);
+        int count = baseDao.getCount("select count(1) from prodiodetail where pd_piid=" + tlid);
+        if (count<=0){
+            baseDao.deleteById("prodinout","pi_id",tlid);
+        }
+        Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_code=?",
+                new BeanPropertyRowMapper<Employee>(Employee.class), "mes");
+        if (count>0) {
+            String s1 = postProdInOut(tlid, tlcaller, employee);
+            logger.info("S1==" + s1);
+            if (s1 != null) {
+                return ApiResponse.successRsp("0", request.getHeader("RequestId"), tlpiclass+":" + tlcode + ",过账失败,请在ERP重新过账!");
+            }
+        }
+        String s = postProdInOut(id, bccaller, employee);
+        logger.info("S=="+s);
+        if (s!=null){
+            return ApiResponse.successRsp("0",request.getHeader("RequestId"),bcpiclass+":"+code+",过账失败,请在ERP重新过账!");
+        }
+        return ApiResponse.successRsp("0",request.getHeader("RequestId"),tlpiclass+":"+tlcode+","+bcpiclass+":"+code+",请在ERP查看!");
     }
 
     @Override