|
|
|
@ -357,6 +357,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
|
|
|
|
|
|
|
|
|
|
if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0
|
|
|
|
|
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(sHzWorks==null){
|
|
|
|
|
return R.fail("未查询到一层报工单");
|
|
|
|
|
}
|
|
|
|
@ -380,6 +385,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
|
|
|
|
|
|
|
|
|
|
if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0
|
|
|
|
|
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(sHzWorks==null){
|
|
|
|
|
return R.fail("未查询到子报工单");
|
|
|
|
|
}
|
|
|
|
@ -394,6 +404,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
|
|
|
|
|
MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork);
|
|
|
|
|
|
|
|
|
|
if(pHzWork==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0
|
|
|
|
|
pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(pHzWork==null){
|
|
|
|
|
return R.fail("未查询到母报工单");
|
|
|
|
|
}
|
|
|
|
@ -428,6 +443,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
|
|
|
|
|
|
|
|
|
|
if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0
|
|
|
|
|
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (sHzWorks == null) {
|
|
|
|
|
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");
|
|
|
|
|
}
|
|
|
|
@ -458,6 +478,124 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
return sapRson;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public R prReportWork(MesReportWork mesReportWork) {
|
|
|
|
|
|
|
|
|
|
//根据belong_work_order找到sap工单(子子母)
|
|
|
|
|
List<MesReportWork> workOrders = mesReportWorkMapper.getSapWorkOrderByReport(mesReportWork.getReportCode());
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrders)) {
|
|
|
|
|
return R.fail("子母工单信息缺失");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
R sapRson = null;
|
|
|
|
|
if(workOrders.size()==1){
|
|
|
|
|
/**(一层报工)工单报工**/
|
|
|
|
|
mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工
|
|
|
|
|
mesReportWork.setProdType("prod");
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(workOrders.get(0).getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork);
|
|
|
|
|
if(sHzWorks==null){
|
|
|
|
|
return R.fail("未查询到一层报工单");
|
|
|
|
|
}
|
|
|
|
|
//查询base_product的report_rate//单层项向sap报工的数量=上位机报工数量*报工汇率
|
|
|
|
|
BigDecimal reportRate = mesReportWorkMapper.getReportRate(workOrders.get(0).getProductCode());
|
|
|
|
|
if(reportRate != null){
|
|
|
|
|
BigDecimal newQuantity = sHzWorks.getQuantityFeedback().multiply(reportRate);
|
|
|
|
|
sHzWorks.setQuantityFeedback(newQuantity);
|
|
|
|
|
}
|
|
|
|
|
//机器=sum(工时数) 【设备开机时间】 Sac1
|
|
|
|
|
//人工 = sum(每批的工时数*每批用人数) Sac2
|
|
|
|
|
//子工单报工
|
|
|
|
|
logger.info("==========================一层工单预报工开始");
|
|
|
|
|
sHzWorks.setMachineCode(workOrders.get(0).getMachineCode());
|
|
|
|
|
sapRson = this.preReportToSap(sHzWorks);
|
|
|
|
|
logger.info("==========================一层工单预报工结束:"+JSONObject.toJSONString(sapRson));
|
|
|
|
|
}else if(workOrders.size()==2){
|
|
|
|
|
/**(两层报工)子工单先报工,然后母工单报工**/
|
|
|
|
|
mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工
|
|
|
|
|
mesReportWork.setProdType("prod");
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(workOrders.get(0).getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork);
|
|
|
|
|
if(sHzWorks==null){
|
|
|
|
|
return R.fail("未查询到子报工单");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//子工单报工
|
|
|
|
|
logger.info("==========================子工单预报工开始");
|
|
|
|
|
sHzWorks.setMachineCode(workOrders.get(0).getMachineCode());
|
|
|
|
|
sapRson = this.preReportToSap(sHzWorks);
|
|
|
|
|
logger.info("==========================子工单预报工结束:"+JSONObject.toJSONString(sapRson));
|
|
|
|
|
if(sapRson.getCode()== 200){
|
|
|
|
|
//一定是子单报工成功返回后,再母单报工
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(workOrders.get(1).getMachineCode());
|
|
|
|
|
MesReportWork pHzWork = mesReportWorkMapper.getPreReportWork(mesReportWork);
|
|
|
|
|
if(pHzWork==null){
|
|
|
|
|
return R.fail("未查询到母报工单");
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(3000);
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
//母工单报工
|
|
|
|
|
logger.info("==========================母工单预报工开始");
|
|
|
|
|
//查询base_product的report_rate//箱子-大盒-小盒
|
|
|
|
|
BigDecimal reportRate = mesReportWorkMapper.getReportRate(workOrders.get(1).getProductCode());
|
|
|
|
|
if(reportRate != null){
|
|
|
|
|
BigDecimal newQuantity = sHzWorks.getQuantityFeedback().divide(reportRate,2, RoundingMode.HALF_UP);
|
|
|
|
|
pHzWork.setQuantityFeedback(newQuantity);
|
|
|
|
|
}else{
|
|
|
|
|
pHzWork.setQuantityFeedback(sHzWorks.getQuantityFeedback());
|
|
|
|
|
}
|
|
|
|
|
pHzWork.setMachineCode(mesReportWork.getMachineCode());
|
|
|
|
|
//pHzWork.setSac2("4");//母单报工固定值(上位机插入数据时候默认4)
|
|
|
|
|
R sapR = this.preReportToSap(pHzWork);
|
|
|
|
|
logger.info("==========================母工单预报工结束"+JSONObject.toJSONString(sapR));
|
|
|
|
|
return sapR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}else if(workOrders.size()>=3){
|
|
|
|
|
BigDecimal gamng = null;
|
|
|
|
|
for(int n=0;n<workOrders.size();n++){
|
|
|
|
|
MesReportWork workOrder = workOrders.get(n);
|
|
|
|
|
mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工
|
|
|
|
|
mesReportWork.setProdType("prod");
|
|
|
|
|
mesReportWork.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
mesReportWork.setMachineCode(workOrder.getMachineCode());
|
|
|
|
|
MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork);
|
|
|
|
|
if (sHzWorks == null) {
|
|
|
|
|
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");
|
|
|
|
|
}
|
|
|
|
|
if(n == (workOrders.size()-2)){
|
|
|
|
|
gamng = sHzWorks.getQuantityFeedback();
|
|
|
|
|
}
|
|
|
|
|
if(n == (workOrders.size()-1)){
|
|
|
|
|
sHzWorks.setQuantityFeedback(gamng);
|
|
|
|
|
}
|
|
|
|
|
//三层以上工单报工
|
|
|
|
|
logger.info("==========================三层(第"+n+"层)以上工单("+sHzWorks.getWorkorderCodeSap()+")预报工开始");
|
|
|
|
|
sHzWorks.setMachineCode(workOrder.getMachineCode());
|
|
|
|
|
sapRson = this.preReportToSap(sHzWorks);
|
|
|
|
|
logger.info("==========================三层(第"+n+"层)以上工单("+sHzWorks.getWorkorderCodeSap()+")预报工结束:"
|
|
|
|
|
+ JSONObject.toJSONString(sapRson));
|
|
|
|
|
if (sapRson.getCode() == 200) {
|
|
|
|
|
try {
|
|
|
|
|
Thread.sleep(3000);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
//报工不成功跳出循环
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return sapRson;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param workOrder
|
|
|
|
@ -495,9 +633,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
}
|
|
|
|
|
sapRFW.setLt_hwList(lt_hwList);
|
|
|
|
|
sapRFW.setAnzma(workOrder.getSapCode());//产线编号
|
|
|
|
|
sapRFW.setRemark(workOrder.getRemark());//产线编号
|
|
|
|
|
sapRFW.setRemark(workOrder.getRemark());//备注
|
|
|
|
|
logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工请求:" + JSONObject.toJSONString(sapRFW));
|
|
|
|
|
R r = remoteSapService.sapRFWOrder(sapRFW);
|
|
|
|
|
R r = R.ok();//remoteSapService.sapRFWOrder(sapRFW);
|
|
|
|
|
logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工结果:" + r.getCode() + "," + r.getData() + "," + r.getMsg());
|
|
|
|
|
//上传成功,更改mes_report_work状态
|
|
|
|
|
if (r.getCode() == 200) {
|
|
|
|
@ -513,6 +651,55 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
|
|
|
|
|
// return R.ok();//测试
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*预报工专用
|
|
|
|
|
* @param workOrder
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private R preReportToSap(MesReportWork workOrder) {
|
|
|
|
|
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());//机器
|
|
|
|
|
ltgs.setConf_activity2(workOrder.getSac2());//人工
|
|
|
|
|
ltgs.setConf_activity3(workOrder.getSac1());//折旧
|
|
|
|
|
ltgs.setConf_activity4(workOrder.getSac2());//其它
|
|
|
|
|
// ltgs.setConf_activity5(workOrder.getSac5());
|
|
|
|
|
// ltgs.setConf_activity6(workOrder.getSac6());
|
|
|
|
|
sapRFW.setLt_gs(ltgs);
|
|
|
|
|
List<SapRFW.lt_hw> lt_hwList = new ArrayList<>();
|
|
|
|
|
MesReportWorkConsume consumeqo = new MesReportWorkConsume();
|
|
|
|
|
consumeqo.setWorkorderCode(workOrder.getWorkorderCode());
|
|
|
|
|
consumeqo.setRecoil("X");
|
|
|
|
|
consumeqo.setMachineCode(workOrder.getMachineCode());
|
|
|
|
|
// List<MesReportWorkConsume> consumes = mesReportWorkConsumeMapper.getSumConsumeList(consumeqo);
|
|
|
|
|
// if (!CollectionUtils.isEmpty(consumes)) {
|
|
|
|
|
// for (MesReportWorkConsume consume : consumes) {
|
|
|
|
|
// SapRFW.lt_hw lthw = new SapRFW.lt_hw();//MES生产订单报工货物移动修改
|
|
|
|
|
// lthw.setEntry_qnt(consume.getQuantity() + "");//数量
|
|
|
|
|
// lthw.setMaterial(consume.getMaterialCode());//物料编码
|
|
|
|
|
// lt_hwList.add(lthw);
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工:工单" + workOrder.getWorkorderCode() + "mes_report_work_consume没有数据");
|
|
|
|
|
// return R.fail("mes_report_work_consume没有数据");
|
|
|
|
|
// }
|
|
|
|
|
sapRFW.setLt_hwList(lt_hwList);
|
|
|
|
|
sapRFW.setAnzma(workOrder.getSapCode());//产线编号
|
|
|
|
|
sapRFW.setRemark(workOrder.getRemark());//备注
|
|
|
|
|
logger.info(workOrder.getWorkorderCodeSap() + "sap工单预报工请求:" + JSONObject.toJSONString(sapRFW));
|
|
|
|
|
R r = remoteSapService.sapRFWOrder(sapRFW);
|
|
|
|
|
logger.info(workOrder.getWorkorderCodeSap() + "sap工单预报工结果:" + r.getCode() + "," + r.getData() + "," + r.getMsg());
|
|
|
|
|
//上传成功,更改mes_report_work--attr1状态
|
|
|
|
|
if (r.getCode() == 200) {
|
|
|
|
|
workOrder.setAttr1("1");
|
|
|
|
|
}
|
|
|
|
|
mesReportWorkMapper.updatePreReportAttr1(workOrder);
|
|
|
|
|
return r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void dateBKFunc(String poolName, List<String> tables) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
|
|
|
|
|