|
|
|
@ -305,6 +305,12 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
* * 人工 = 管理系统维护的用人数*机器
|
|
|
|
|
* * 折旧 = 机器
|
|
|
|
|
* * 其它 = 人工
|
|
|
|
|
* * 三层及其以上----------------------------------------
|
|
|
|
|
* * 工单进行报工的时候公式调整如下(数值单位不用管),根据上位机用户真实填的来:
|
|
|
|
|
* * 机器=开机时长
|
|
|
|
|
* * 人工 = 人工
|
|
|
|
|
* * 折旧 = 机器
|
|
|
|
|
* * 其它 = 人工
|
|
|
|
|
* @param mesReportWork
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -315,7 +321,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
DynamicDataSourceContextHolder.push(mesReportWork.getFactoryCode());// 这是数据源的key
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据belong_work_order找到sap工单
|
|
|
|
|
//根据belong_work_order找到sap工单(子子母)
|
|
|
|
|
List<MesReportWork> workOrders = mesReportWorkMapper.getSapWorkOrder(mesReportWork.getWorkorderCode());
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrders)) {
|
|
|
|
|
return R.fail("子母工单信息缺失");
|
|
|
|
@ -332,7 +338,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
}
|
|
|
|
|
//子工单报工
|
|
|
|
|
logger.info("==========================一层工单报工开始");
|
|
|
|
|
sapRson = this.reportHzToSap(sHzWorks);
|
|
|
|
|
sapRson = this.reportHzToSap(sHzWorks,1);
|
|
|
|
|
logger.info("==========================一层工单报工结束:"+JSONObject.toJSONString(sapRson));
|
|
|
|
|
}else if(workOrders.size()==2){
|
|
|
|
|
/**(两层报工)子工单先报工,然后母工单报工**/
|
|
|
|
@ -345,7 +351,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
}
|
|
|
|
|
//子工单报工
|
|
|
|
|
logger.info("==========================子工单报工开始");
|
|
|
|
|
sapRson = this.reportHzToSap(sHzWorks);
|
|
|
|
|
sapRson = this.reportHzToSap(sHzWorks,2);
|
|
|
|
|
logger.info("==========================子工单报工结束:"+JSONObject.toJSONString(sapRson));
|
|
|
|
|
if(sapRson.getCode()== 200){
|
|
|
|
|
//一定是子单报工成功返回后,再母单报工
|
|
|
|
@ -363,13 +369,38 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
logger.info("==========================母工单报工开始");
|
|
|
|
|
pHzWork.setQuantityFeedback(sHzWorks.getQuantityFeedback());
|
|
|
|
|
pHzWork.setSac1(sHzWorks.getSac1());
|
|
|
|
|
R sapR = this.reportHzToSap(pHzWork);
|
|
|
|
|
R sapR = this.reportHzToSap(pHzWork,2);
|
|
|
|
|
logger.info("==========================母工单报工结束"+JSONObject.toJSONString(sapR));
|
|
|
|
|
return sapR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}else if(workOrders.size()==3){
|
|
|
|
|
//20240301 TODO;
|
|
|
|
|
}else if(workOrders.size()>=3){
|
|
|
|
|
for(MesReportWork workOrder:workOrders){
|
|
|
|
|
mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工
|
|
|
|
|
mesReportWork.setProdType("prod");
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz1(mesReportWork);
|
|
|
|
|
if (sHzWorks == null) {
|
|
|
|
|
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");
|
|
|
|
|
}
|
|
|
|
|
//三层以上工单报工
|
|
|
|
|
logger.info("==========================三层以上工单("+sHzWorks.getWorkorderCodeSap()+")报工开始");
|
|
|
|
|
sapRson = this.reportHzToSap(sHzWorks,3);
|
|
|
|
|
logger.info("==========================三层以上工单("+sHzWorks.getWorkorderCodeSap()+")报工结束:"
|
|
|
|
|
+ JSONObject.toJSONString(sapRson));
|
|
|
|
|
if (sapRson.getCode() == 200) {
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(3000);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
//最终报工标识且sap报工成功:关闭子母工单
|
|
|
|
|
//MesReportWork endReport = mesReportWorkMapper.getEndReport(pHzWork);
|
|
|
|
|
}else{
|
|
|
|
|
//报工不成功跳出循环
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return sapRson;
|
|
|
|
|
}
|
|
|
|
@ -379,15 +410,22 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
* @param workOrder
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private R reportHzToSap(MesReportWork workOrder) {
|
|
|
|
|
private R reportHzToSap(MesReportWork workOrder,int cengji) {
|
|
|
|
|
Date nowTime = DateUtils.getNowDate();
|
|
|
|
|
SapRFW sapRFW = new SapRFW();
|
|
|
|
|
sapRFW.setAufnr(workOrder.getWorkorderCodeSap());//虚拟工单号
|
|
|
|
|
sapRFW.setGamng(workOrder.getQuantityFeedback().toString());//报工数量
|
|
|
|
|
SapRFW.lt_gs ltgs = new SapRFW.lt_gs();//生产订单报工工时修改
|
|
|
|
|
ltgs.setConf_activity1(workOrder.getSac1());//机器
|
|
|
|
|
BigDecimal newMan = new BigDecimal(workOrder.getSac1())
|
|
|
|
|
.multiply(new BigDecimal(workOrder.getSac2()));
|
|
|
|
|
BigDecimal newMan = null;
|
|
|
|
|
if(cengji == 3){
|
|
|
|
|
//订单是三层的情况
|
|
|
|
|
newMan = new BigDecimal(workOrder.getSac2());
|
|
|
|
|
}else{
|
|
|
|
|
//订单是一层、二层的情况
|
|
|
|
|
newMan = new BigDecimal(workOrder.getSac1())
|
|
|
|
|
.multiply(new BigDecimal(workOrder.getSac2()));
|
|
|
|
|
}
|
|
|
|
|
ltgs.setConf_activity2(newMan.toString());//人工
|
|
|
|
|
ltgs.setConf_activity3(workOrder.getSac1());//折旧
|
|
|
|
|
ltgs.setConf_activity4(newMan.toString());//其它
|
|
|
|
|