|
|
@@ -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
|