sap报工

orign^2
zhaoxiaolin 1 year ago
parent 85f629ce61
commit 56fc72ff0d

@ -6,6 +6,7 @@ import com.op.common.core.web.domain.TreeEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -185,6 +186,52 @@ public class ProOrderWorkorderDTO extends TreeEntity {
// 供湿料计划使用
private String bucketName1;
private String workorderCodes;
private String productCodes;
private String productNames;
private BigDecimal quantitySplits;
private String units;
public String getWorkorderCodes() {
return workorderCodes;
}
public void setWorkorderCodes(String workorderCodes) {
this.workorderCodes = workorderCodes;
}
public String getProductCodes() {
return productCodes;
}
public void setProductCodes(String productCodes) {
this.productCodes = productCodes;
}
public String getProductNames() {
return productNames;
}
public void setProductNames(String productNames) {
this.productNames = productNames;
}
public BigDecimal getQuantitySplits() {
return quantitySplits;
}
public void setQuantitySplits(BigDecimal quantitySplits) {
this.quantitySplits = quantitySplits;
}
public String getUnits() {
return units;
}
public void setUnits(String units) {
this.units = units;
}
public String getMaterialName1() {
return materialName1;
}

@ -114,7 +114,7 @@ public class SapRFW {
}
}
public class lt_hw{
public static class lt_hw{
String material;
String entry_qnt;

@ -4,6 +4,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.mes.domain.MesReportWork;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO;
@ -135,4 +136,21 @@ public class MesReportWorkConsumeController extends BaseController {
List<BaseTeamTDTO> list = mesReportWorkConsumeService.getTeamList(dto);
return list;
}
/**获取母子报工物料损耗记录**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getConsumeList")
public List getConsumeList(MesReportWorkConsume mesReportWorkConsume) {
List<MesReportWorkConsume> rlist = mesReportWorkConsumeService.getConsumeList(mesReportWorkConsume);
return rlist;
}
@PostMapping("/submitConsumePS")
public AjaxResult submitConsumePS(@RequestBody List<MesReportWorkConsume> mesReportWorkConsume) {
return toAjax(mesReportWorkConsumeService.submitConsumePS(mesReportWorkConsume));
}
/**填写报工**/
@PostMapping("/submitReportInfo")
public AjaxResult submitReportInfo(@RequestBody MesReportWork mesReportWork) {
return toAjax(mesReportWorkConsumeService.submitReportInfo(mesReportWork));
}
}

@ -66,8 +66,9 @@ public class MesReportWorkController extends BaseController {
// String dateEndStr = dtf.format(dateEnd)+" 00:00:00";
// mesReportWork.setCreateTimeEnd(dateEndStr);//end
// }
List<MesReportWork> list = mesReportWorkService.selectMesReportWorkList(mesReportWork);
return getDataTable(list);
// List<MesReportWork> list = mesReportWorkService.selectMesReportWorkList(mesReportWork);
List<MesReportWork> hzlist = mesReportWorkService.getReportWorkHzList(mesReportWork);
return getDataTable(hzlist);
}
/**
@ -369,6 +370,26 @@ public class MesReportWorkController extends BaseController {
return mesReportWorkService.getBatchList(ProOrderWorkorder);
}
/**获取母子报工记录**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getReportList")
public List getReportList(MesReportWork mesReportWork) {
List<MesReportWork> rlist = mesReportWorkService.getReportList(mesReportWork);
return rlist;
}
@PostMapping("/submitReportPS")
public AjaxResult submitReportPS(@RequestBody List<MesReportWork> mesReportWorks) {
return toAjax(mesReportWorkService.submitReportPS(mesReportWorks));
}
@GetMapping("/getPrepareList")
public List getPrepareList(MesPrepareDetail mesPrepareDetail) {
List<MesPrepareDetail> rlist = mesReportWorkService.getPrepareList(mesPrepareDetail);
return rlist;
}
public static void main(String args[]){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
try {

@ -29,7 +29,7 @@ public class MesPrepareDetail extends BaseEntity {
/** 物料名称 */
@Excel(name = "物料名称")
private String materailName;
private String materialName;
/** 规格型号 */
@Excel(name = "规格型号")
@ -83,6 +83,24 @@ public class MesPrepareDetail extends BaseEntity {
private String needDate;
private String recoil;
private String buyFlag;
private String workorderCode;
private String parentOrder;
public String getParentOrder() {
return parentOrder;
}
public void setParentOrder(String parentOrder) {
this.parentOrder = parentOrder;
}
public String getWorkorderCode() {
return workorderCode;
}
public void setWorkorderCode(String workorderCode) {
this.workorderCode = workorderCode;
}
public String getBuyFlag() {
return buyFlag;
@ -149,13 +167,15 @@ public class MesPrepareDetail extends BaseEntity {
public String getMaterialCode() {
return materialCode;
}
public void setMaterailName(String materailName) {
this.materailName = materailName;
public String getMaterialName() {
return materialName;
}
public String getMaterailName() {
return materailName;
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public void setMaterailSpc(String materailSpc) {
this.materailSpc = materailSpc;
}
@ -247,7 +267,7 @@ public class MesPrepareDetail extends BaseEntity {
.append("recordId", getRecordId())
.append("prepareId", getPrepareId())
.append("materialCode", getMaterialCode())
.append("materailName", getMaterailName())
.append("materialName", getMaterialName())
.append("materailSpc", getMaterailSpc())
.append("unit", getUnit())
.append("quantity", getQuantity())

@ -2,6 +2,8 @@ package com.op.mes.domain;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -80,6 +82,7 @@ public class MesReportWork extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date feedbackTime;
private String feedbackTimeStr;
/** 录入人员 */
@Excel(name = "录入人员")
@ -165,6 +168,131 @@ public class MesReportWork extends BaseEntity {
private String feedbackTimeEnd;
private String batch;
private String endReport;
private String parentOrder;
private String workorderCodes;
private String productCodes;
private String productNames;
private BigDecimal quantitys;
private BigDecimal quantitySplits;
private String units;
private BigDecimal quantityFeedbacks;
private Long useMans;
private Long workTimes;
private String workCenter;
private String shiftId;
private List<MesReportWorkConsume> consumesInfos;
public String getShiftId() {
return shiftId;
}
public void setShiftId(String shiftId) {
this.shiftId = shiftId;
}
public String getWorkCenter() {
return workCenter;
}
public void setWorkCenter(String workCenter) {
this.workCenter = workCenter;
}
public Long getUseMans() {
return useMans;
}
public void setUseMans(Long useMans) {
this.useMans = useMans;
}
public Long getWorkTimes() {
return workTimes;
}
public void setWorkTimes(Long workTimes) {
this.workTimes = workTimes;
}
public BigDecimal getQuantityFeedbacks() {
return quantityFeedbacks;
}
public void setQuantityFeedbacks(BigDecimal quantityFeedbacks) {
this.quantityFeedbacks = quantityFeedbacks;
}
public BigDecimal getQuantitys() {
return quantitys;
}
public void setQuantitys(BigDecimal quantitys) {
this.quantitys = quantitys;
}
public String getWorkorderCodes() {
return workorderCodes;
}
public void setWorkorderCodes(String workorderCodes) {
this.workorderCodes = workorderCodes;
}
public String getProductCodes() {
return productCodes;
}
public void setProductCodes(String productCodes) {
this.productCodes = productCodes;
}
public String getProductNames() {
return productNames;
}
public void setProductNames(String productNames) {
this.productNames = productNames;
}
public BigDecimal getQuantitySplits() {
return quantitySplits;
}
public void setQuantitySplits(BigDecimal quantitySplits) {
this.quantitySplits = quantitySplits;
}
public String getUnits() {
return units;
}
public void setUnits(String units) {
this.units = units;
}
public List<MesReportWorkConsume> getConsumesInfos() {
return consumesInfos;
}
public void setConsumesInfos(List<MesReportWorkConsume> consumesInfos) {
this.consumesInfos = consumesInfos;
}
public String getParentOrder() {
return parentOrder;
}
public void setParentOrder(String parentOrder) {
this.parentOrder = parentOrder;
}
public String getFeedbackTimeStr() {
return feedbackTimeStr;
}
public void setFeedbackTimeStr(String feedbackTimeStr) {
this.feedbackTimeStr = feedbackTimeStr;
}
public String getEndReport() {
return endReport;

@ -5,9 +5,11 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import java.math.BigDecimal;
/**
* mes_report_work_consume
*
*
* @author Open Platform
* @date 2023-08-24
*/
@ -35,7 +37,7 @@ public class MesReportWorkConsume extends BaseEntity {
/** 数量 */
@Excel(name = "数量")
private Long quantity;
private BigDecimal quantity;
/** 单位 */
@Excel(name = "单位")
@ -67,6 +69,33 @@ public class MesReportWorkConsume extends BaseEntity {
//虚拟字段
private String id;
private String parentOrder;
private String batch;
private String recoil;
public String getRecoil() {
return recoil;
}
public void setRecoil(String recoil) {
this.recoil = recoil;
}
public String getBatch() {
return batch;
}
public void setBatch(String batch) {
this.batch = batch;
}
public String getParentOrder() {
return parentOrder;
}
public void setParentOrder(String parentOrder) {
this.parentOrder = parentOrder;
}
public void setRecordId(String recordId) {
this.recordId = recordId;
@ -111,13 +140,15 @@ public class MesReportWorkConsume extends BaseEntity {
public String getMaterialSpc() {
return materialSpc;
}
public void setQuantity(Long quantity) {
this.quantity = quantity;
}
public Long getQuantity() {
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public void setUnit(String unit) {
this.unit = unit;
}

@ -69,4 +69,10 @@ public interface MesReportWorkConsumeMapper {
List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto);
int insertMesReportWorkConsumes(@Param("list") List<MesReportWorkConsume> mesReportWorkConsumes);
List<MesReportWorkConsume> getConsumeList(MesReportWorkConsume mesReportWorkConsume);
int submitConsumePS(@Param("list")List<MesReportWorkConsume> mesReportWorkConsumes);
int addConsumePS(@Param("list")List<MesReportWorkConsume> rconsumes);
}

@ -10,6 +10,7 @@ import com.op.system.api.domain.device.EquEquipmentDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -71,7 +72,7 @@ public interface MesReportWorkMapper {
public List<MesReportProduction> getProductionList(MesReportProduction mesReportProduction);
public List<MesReportWork> getReportWorkList(MesReportWork mesReportWork);
public List<MesReportWork> getReportWork(MesReportWork mesReportWork);
public void updateSyncSapStatus(MesReportWork work);
@ -81,7 +82,7 @@ public interface MesReportWorkMapper {
List<SysFactoryDto> getWorkcenterList(MesDailyReport mesDailyReport);
public void updateWorkOrderStatus(MesReportWork work);
public void updateOrderWorkStatus(MesReportWork work);
@MapKey("nameDate")
Map<String,MesReportProduction> getLineChartsDatas(MesReportProduction mesReportProduction);
@ -109,5 +110,15 @@ public interface MesReportWorkMapper {
List<ProOrderWorkorder> getBatchList(ProOrderWorkorder proOrderWorkorder);
List<String> getSapWorkOrder(String workorderCode);
List<MesReportWork> getSapWorkOrder(String workorderCode);
List<MesReportWork> getReportWorkHzList(MesReportWork mesReportWork);
List<MesReportWork> getReportList(MesReportWork mesReportWork);
int submitReportPS(@Param("list") List<MesReportWork> mesReportWorks);
List<MesPrepareDetail> getPrepareList(MesPrepareDetail mesPrepareDetail);
int addReportPS(@Param("list") List<MesReportWork> rworks);
}

@ -1,6 +1,8 @@
package com.op.mes.service;
import java.util.List;
import com.op.mes.domain.MesReportWork;
import com.op.mes.domain.MesReportWorkConsume;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
@ -74,4 +76,10 @@ public interface IMesReportWorkConsumeService {
public List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto);
int insertMesReportWorkConsumes(List<MesReportWorkConsume> mesReportWorkConsumes);
List<MesReportWorkConsume> getConsumeList(MesReportWorkConsume mesReportWorkConsume);
int submitConsumePS(List<MesReportWorkConsume> mesReportWorkConsume);
int submitReportInfo(MesReportWork mesReportWork);
}

@ -90,4 +90,12 @@ public interface IMesReportWorkService {
R reportSap(MesReportWork mesReportWork);
List<ProOrderWorkorder> getBatchList(ProOrderWorkorder proOrderWorkorder);
List<MesReportWork> getReportWorkHzList(MesReportWork mesReportWork);
List<MesReportWork> getReportList(MesReportWork mesReportWork);
int submitReportPS(List<MesReportWork> mesReportWorks);
List<MesPrepareDetail> getPrepareList(MesPrepareDetail mesPrepareDetail);
}

@ -9,6 +9,7 @@ import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils;
import com.op.common.core.utils.http.HttpUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.*;
import com.op.mes.domain.buffer.JsonRootBean;
import com.op.mes.domain.dto.LGInfoDto;
@ -281,103 +282,117 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
return R.ok(true);
}
/****
*
*
* @param mesReportWork
* @return
*/
@Override
public R reportWork(MesReportWork mesReportWork) {
String belongWorkOrder = mesReportWork.getWorkorderCode();
if(StringUtils.isNotBlank(mesReportWork.getFactoryCode())){//已经加上ds_
DynamicDataSourceContextHolder.push(mesReportWork.getFactoryCode());// 这是数据源的key
}
//根据belong_work_order找到sap工单
List<MesReportWork> sapWorkOrders = mesReportWorkMapper.getSapWorkOrder(mesReportWork.getWorkorderCode());
if(CollectionUtils.isEmpty(sapWorkOrders)||sapWorkOrders.size()<2){
return R.fail("子母工单信息缺失");
}
/**子工单先报工,然后母工单报工**/
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod");
List<MesReportWork> reportWorks = mesReportWorkMapper.getReportWorkList(mesReportWork);
mesReportWork.setWorkorderCode(sapWorkOrders.get(1).getWorkorderCode());
List<MesReportWork> reportWorks = mesReportWorkMapper.getReportWork(mesReportWork);
if(CollectionUtils.isEmpty(reportWorks)){
return R.fail("未查询到报工单");
return R.fail("未查询到报工单");
}
MesReportWork sWork = reportWorks.get(0);
//子工单报工
logger.info("==========================子工单报工开始");
this.reportToSap(sWork);
logger.info("==========================子工单报工结束");
mesReportWork.setWorkorderCode(sapWorkOrders.get(0).getWorkorderCode());
List<MesReportWork> reportWorks2 = mesReportWorkMapper.getReportWork(mesReportWork);
if(CollectionUtils.isEmpty(reportWorks2)){
return R.fail("未查询到报工单");
}
MesReportWork pWork = reportWorks2.get(0);
//母工单报工
logger.info("==========================母工单报工开始");
this.reportToSap(pWork);
logger.info("==========================母工单报工结束");
//最终报工标识:关闭子母工单
if("1".equals(pWork.getEndReport())){
logger.info("报工======母sap工单编码"+sapWorkOrders.get(0).getWorkorderCodeSap()+
"子sap工单编码"+sapWorkOrders.get(1).getWorkorderCodeSap()
);
//关闭母子订单//订单的订单编码
SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery();
sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0).getWorkorderCodeSap());
sapCloseOrderQuery.setOrder(sapWorkOrders.get(1).getWorkorderCodeSap());
R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery);
logger.info("报工======关闭母子sap工单"+sapCloseOrderQuery.getLeadOrder()+":"+
sapCloseOrderQuery.getOrder()+":"+
closeR.getCode()+","+
closeR.getMsg()+","+
closeR.getData());
MesReportWork rworkVo = new MesReportWork();
rworkVo.setStatus("w3");
rworkVo.setUpdateTime(DateUtils.getNowDate());
rworkVo.setUpdateBy(SecurityUtils.getUsername());
rworkVo.setWorkorderCode(belongWorkOrder);
//pro_work_order status->w3报工--belong_work_order
mesReportWorkMapper.updateOrderWorkStatus(rworkVo);
}
return R.ok();
}
MesReportWork work = reportWorks.get(0);
private R reportToSap(MesReportWork workOrder){
SapRFW sapRFW = new SapRFW();
sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号
sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量
SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改
ltgs.setConf_activity1(work.getSac1());//人工
ltgs.setConf_activity2(work.getSac2());
ltgs.setConf_activity3(work.getSac3());//机器
ltgs.setConf_activity4(work.getSac4());
ltgs.setConf_activity5(work.getSac5());//折旧
ltgs.setConf_activity6(work.getSac6());
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.getSac3());//机器
ltgs.setConf_activity4(workOrder.getSac4());
ltgs.setConf_activity5(workOrder.getSac5());//折旧
ltgs.setConf_activity6(workOrder.getSac6());
sapRFW.setLt_gs(ltgs);
List<SapRFW.lt_hw> lt_hwList =new ArrayList<>();
logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng());
MesReportWorkConsume consumeqo = new MesReportWorkConsume();
consumeqo.setWorkorderCode(work.getWorkorderCode());
consumeqo.setWorkorderCode(workOrder.getWorkorderCode());
List<MesReportWorkConsume> consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo);
if(!CollectionUtils.isEmpty(consumes)){
for(MesReportWorkConsume consume:consumes){
logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+
consume.getMaterialCode()+"|"+consume.getQuantity());
SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改
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(work.getWorkorderCodeSap()+"母sap工单报工工单"+work.getWorkorderCode()+"mes_report_work_consume没有数据");
logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工工单"+workOrder.getWorkorderCode()+"mes_report_work_consume没有数据");
return R.fail("mes_report_work_consume没有数据");
}
sapRFW.setLt_hwList(lt_hwList);
logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工请求"+JSONObject.toJSONString(sapRFW));
R r = remoteSapService.sapRFWOrder(sapRFW);
logger.info(work.getWorkorderCodeSap()+"sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg());
logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg());
//上传成功更改mes_report_work状态
if (r.getCode() == 200) {
work.setUploadStatus("1");
workOrder.setUploadStatus("1");
} else {
work.setUploadStatus("2");
work.setUploadMsg(r.getMsg());
}
work.setUploadTime(DateUtils.getNowDate());
mesReportWorkMapper.updateSyncSapStatus(work);
//工单完成数量>工单数量:关闭订单
MesReportWork proResult = mesReportWorkMapper.getProdResult(work);
//ProOrderWorkorder topOrder = this.getTopOrder(work.getWorkorderCode());
if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0
||
"1".equals(work.getEndReport())//最终报工标识
){
logger.info("工单请求关闭调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap());
//工单完成,关闭工单
List<String> sapWorkOrders = mesReportWorkMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单
//关闭母子订单//订单的订单编码
SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery();
sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0));
sapCloseOrderQuery.setOrder(sapWorkOrders.get(1));
R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery);
logger.info(work.getWorkorderCodeSap()+"报工后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+
sapCloseOrderQuery.getOrder()+":"+
closeR.getCode()+","+
closeR.getMsg()+","+
closeR.getData());
work.setStatus("w3");
work.setUpdateTime(DateUtils.getNowDate());
//pro_work_order status->w3报工--belong_work_order
mesReportWorkMapper.updateWorkOrderStatus(work);
logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功");
workOrder.setUploadStatus("2");
workOrder.setUploadMsg(r.getMsg());
}
workOrder.setUploadTime(DateUtils.getNowDate());
mesReportWorkMapper.updateSyncSapStatus(workOrder);
return R.ok();
}
// //根据工单子单编码获取最顶级订单的母单
// private ProOrderWorkorder getTopOrder(String workorderCode) {
// //pro_order_workorder
// ProOrderWorkorder topOrder = mesReportWorkMapper.getOrderByCode(workorderCode);
// while (!"0".equals(topOrder.getParentOrder()) && StringUtils.isNotEmpty(topOrder.getParentOrder())) {
// //pro_order_workorder
// topOrder = mesReportWorkMapper.getOrderByCode(topOrder.getParentOrder());
// }
// return topOrder;
// }
public void dateBKFunc(String poolName,List<String> tables){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key

@ -1,18 +1,28 @@
package com.op.mes.service.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.MesReportWork;
import com.op.mes.mapper.MesReportWorkMapper;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.mes.mapper.MesReportWorkConsumeMapper;
import com.op.mes.domain.MesReportWorkConsume;
import com.op.mes.service.IMesReportWorkConsumeService;
import org.springframework.util.CollectionUtils;
/**
* Service
@ -22,9 +32,13 @@ import com.op.mes.service.IMesReportWorkConsumeService;
*/
@Service
public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeService {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private MesReportWorkConsumeMapper mesReportWorkConsumeMapper;
@Autowired
private MesReportWorkMapper mesReportWorkMapper;
/**
*
*
@ -135,4 +149,99 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer
return mesReportWorkConsumeMapper.getTeamList(dto);
}
@Override
@DS("#header.poolName")
public List<MesReportWorkConsume> getConsumeList(MesReportWorkConsume mesReportWorkConsume) {
return mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume);
}
@Override
@DS("#header.poolName")
public int submitConsumePS(List<MesReportWorkConsume> mesReportWorkConsumes) {
Date nowTime = DateUtils.getNowDate();
String updateBy = SecurityUtils.getUsername();
for(MesReportWorkConsume mesReportWorkConsume:mesReportWorkConsumes){
mesReportWorkConsume.setUpdateTime(nowTime);
mesReportWorkConsume.setUpdateBy(updateBy);
}
return mesReportWorkConsumeMapper.submitConsumePS(mesReportWorkConsumes);
}
@Override
@DS("#header.poolName")
public int submitReportInfo(MesReportWork mesReportWork) {
Date nowTime = DateUtils.getNowDate();
String createBy = SecurityUtils.getUsername();
mesReportWork.setCreateBy(createBy);
mesReportWork.setCreateTime(nowTime);
//mes_report_work 母子
List<MesReportWork> rworks = this.getAddMesReportWorks(mesReportWork);
if(!CollectionUtils.isEmpty(rworks)){
int rps = mesReportWorkMapper.addReportPS(rworks);
System.out.println("rps添加成功:"+rps);
}
//mes_report_work_consume 母子
List<MesReportWorkConsume> rconsumes = this.getAddWorkConsumes(mesReportWork,
rworks.get(0).getReportCode(),
rworks.get(1).getReportCode());
if(!CollectionUtils.isEmpty(rconsumes)) {
int rcs = mesReportWorkConsumeMapper.addConsumePS(rconsumes);
System.out.println("rcs添加成功:" + rcs);
}
return 1;
}
private List<MesReportWork> getAddMesReportWorks(MesReportWork mesReportWork){
List<MesReportWork> rworks = new ArrayList<>();
//母
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, mesReportWork.getFeedbackTime());
int liushuiNum = mesReportWorkMapper.getTodayMaxNum(mesReportWork);
String liushuiStr = String.format("%04d", liushuiNum);
String pReportCode = bpDD+liushuiStr;
MesReportWork prwork = new MesReportWork();
BeanUtils.copyProperties(mesReportWork,prwork);
prwork.setId(IdUtils.fastSimpleUUID());
prwork.setReportCode(pReportCode);
prwork.setParentOrder("0");
prwork.setProdType("prod");
rworks.add(prwork);
//子
String bpDD2 = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, mesReportWork.getFeedbackTime());
int liushuiNum2 = mesReportWorkMapper.getTodayMaxNum(mesReportWork);
String liushuiStr2 = String.format("%04d", liushuiNum2);
String pReportCode2 = bpDD2+liushuiStr2;
MesReportWork srwork = new MesReportWork();
BeanUtils.copyProperties(mesReportWork,srwork);
srwork.setId(IdUtils.fastSimpleUUID());
srwork.setReportCode(pReportCode2);
srwork.setWorkorderCode(mesReportWork.getWorkorderCodes());
srwork.setParentOrder(mesReportWork.getWorkorderCode());
srwork.setProductCode(mesReportWork.getProductCodes());
srwork.setProductName(mesReportWork.getProductNames());
srwork.setUnit(mesReportWork.getUnits());
srwork.setQuantity(mesReportWork.getQuantitys());
srwork.setQuantityFeedback(mesReportWork.getQuantityFeedbacks());
srwork.setUseMan(mesReportWork.getUseMans());
srwork.setWorkTime(mesReportWork.getWorkTimes());
srwork.setUseMan(mesReportWork.getUseMans());
srwork.setProdType("prod");
rworks.add(srwork);
return rworks;
}
private List<MesReportWorkConsume> getAddWorkConsumes(MesReportWork mesReportWork,String pReportCode,String sReportCode) {
List<MesReportWorkConsume> rconsumes = mesReportWork.getConsumesInfos();
for(MesReportWorkConsume consume:rconsumes){
consume.setRecordId(IdUtils.fastSimpleUUID());
consume.setCreateBy(mesReportWork.getCreateBy());
consume.setCreateTime(mesReportWork.getCreateTime());
if("0".equals(consume.getParentOrder())){
consume.setReportCode(pReportCode);
}else{
consume.setReportCode(sReportCode);
}
}
return rconsumes;
}
}

@ -12,6 +12,7 @@ import com.op.common.core.constant.SecurityConstants;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.ServletUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.*;
import com.op.mes.domain.dto.LineChartDto;
import com.op.mes.domain.dto.LineChartSeriesDto;
@ -128,6 +129,37 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return mesReportWorkMapper.getBatchList(proOrderWorkorder);
}
@Override
@DS("#header.poolName")
public List<MesReportWork> getReportWorkHzList(MesReportWork mesReportWork) {
List<MesReportWork> dtos = mesReportWorkMapper.getReportWorkHzList(mesReportWork);
return dtos;
}
@Override
@DS("#header.poolName")
public List<MesReportWork> getReportList(MesReportWork mesReportWork) {
return mesReportWorkMapper.getReportList(mesReportWork);
}
@Override
@DS("#header.poolName")
public int submitReportPS(List<MesReportWork> mesReportWorks) {
Date nowTime = DateUtils.getNowDate();
String updateBy = SecurityUtils.getUsername();
for(MesReportWork mesReportWork:mesReportWorks){
mesReportWork.setUpdateTime(nowTime);
mesReportWork.setUpdateBy(updateBy);
}
return mesReportWorkMapper.submitReportPS(mesReportWorks);
}
@Override
@DS("#header.poolName")
public List<MesPrepareDetail> getPrepareList(MesPrepareDetail mesPrepareDetail) {
return mesReportWorkMapper.getPrepareList(mesPrepareDetail);
}
/**
*
*
@ -402,6 +434,8 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return dtos;
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime();

@ -82,8 +82,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from base_team_t
where del_flag = '0'
</select>
<select id="getConsumeList" resultType="com.op.mes.domain.MesReportWorkConsume">
select mrwc.record_id recordId,
mrwc.workorder_code workorderCode,
mrwc.material_code materialCode,
mrwc.material_name materialName,
mrwc.quantity,
mrwc.unit,
mrwc.create_time createTime,
mrwc.recoil
from mes_report_work_consume mrwc
where mrwc.del_flag = '0'
<if test='parentOrder=="0"'>
and mrwc.workorder_code = #{workorderCode}
</if>
<if test='parentOrder!="0"'>
and mrwc.parent_order = #{workorderCode}
</if>
</select>
<insert id="insertMesReportWorkConsume" parameterType="MesReportWorkConsume">
<insert id="insertMesReportWorkConsume" parameterType="MesReportWorkConsume">
insert into mes_report_work_consume
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
@ -137,6 +155,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</insert>
<insert id="addConsumePS">
insert into mes_report_work_consume
(
record_id,report_code,workorder_code,
material_code,material_name,quantity,unit,
create_by,create_time,parent_order,recoil
)values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.recordId},#{item.reportCode},#{item.workorderCode},
#{item.materialCode},#{item.materialName},#{item.quantity},#{item.unit},
#{item.createBy},#{item.createTime},#{item.parentOrder},#{item.recoil}
)
</foreach>
</insert>
<update id="updateMesReportWorkConsume" parameterType="MesReportWorkConsume">
update mes_report_work_consume
@ -161,6 +194,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
where record_id = #{recordId}
</update>
<update id="submitConsumePS">
<foreach collection="list" item="item" separator=";">
update mes_report_work_consume
set
quantity = #{item.quantity},
update_by = #{item.updateBy},
update_time = #{item.updateTime}
where
record_id = #{item.recordId}
</foreach>
</update>
<delete id="deleteMesReportWorkConsumeByRecordId" parameterType="String">
update mes_report_work_consume

@ -78,6 +78,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="endFlag" column="end_flag" />
<result property="carNum" column="car_num" />
<result property="sortNo" column="sort_no" />
<result property="workorderCodes" column="workorderCodes" />
<result property="productCodes" column="productCodes" />
<result property="productNames" column="productNames" />
<result property="quantitySplits" column="quantitySplits" />
<result property="units" column="units" />
</resultMap>
<sql id="selectMesReportWorkVo">
select id, report_type, report_code, workorder_code, product_code,
@ -213,7 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productDateStart != null "> and CONVERT(varchar(10),mrw.feedback_time, 120) >= #{productDateStart}</if>
<if test="productDateEnd != null "> and #{productDateEnd} >= CONVERT(varchar(10),mrw.feedback_time, 120)</if>
</select>
<select id="getReportWorkList" resultType="com.op.mes.domain.MesReportWork">
<select id="getReportWork" resultType="com.op.mes.domain.MesReportWork">
select
ow.order_code orderCode,
ow.workorder_code workorderCode,
@ -235,8 +242,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code
left join pro_route rte on rte.route_code = ow.route_code
where mrw.upload_status != #{uploadStatus} and mrw.prod_type = #{prodType}
<if test="reportCode != null ">
and mrw.report_code = #{reportCode}
<if test="workorderCode != null ">
and mrw.workorder_code = #{workorderCode}
</if>
order by mrw.create_time
</select>
@ -421,14 +428,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
pow.product_spc, pow.unit, pow.quantity_split,
pow.route_code, pow.prod_line_code, pow.product_date,
pow.shift_id, pow.parent_order, pow.status, pow.remark,
s.Shift_Desc shiftName
s.Shift_Desc shiftName,
pows.workorder_code workorderCodes,pows.product_code productCodes, pows.product_name productNames,
pows.quantity_split quantitySplits,pows.unit units
from pro_order_workorder pow
left join base_shifts_t s on pow.shift_id = s.Shift_Id
left join pro_order_workorder pows on pows.parent_order = pow.workorder_code
where pow.del_flag = '0' and pow.status = 'w2' and pow.parent_order ='0'
order by pow.product_date desc
<if test="workorderCode != null and workorderCode != ''">
and pow.workorder_code like concat('%', #{workorderCode}, '%')
</if>
order by pow.product_date desc
</select>
<select id="getEquipInfoByCodes" resultType="com.op.system.api.domain.device.EquEquipmentDTO">
select equipment_code equipmentCode,equipment_name equipmentName from base_equipment where equipment_code in
@ -449,9 +460,87 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where powb.del_flag = '0' and pow.del_flag = '0'
and pow.workorder_code = #{workorderCode}
</select>
<select id="getSapWorkOrder" resultType="java.lang.String">
select workorder_code_sap from pro_order_workorder
<select id="getSapWorkOrder" resultType="com.op.mes.domain.MesReportWork">
select workorder_code_sap workorderCodeSap,
workorder_code workorderCode
from pro_order_workorder
where belong_work_order = #{workorderCode} and del_flag = '0'
order by parent_order
</select>
<select id="getReportWorkHzList" resultType="com.op.mes.domain.MesReportWork">
select mrw.workorderCode,mrw.productCode,mrw.productName,mrw.machineCode,mrw.machineName,
mrw.shiftCode,mrw.feedbackTime feedbackTimeStr,mrw.quantityFeedback,mrw.unit,
mrw.workTime,mrw.useMan,mrw.uploadTime,mrw.uploadStatus,
pow.order_code orderCode,pow.quantity_split quantity
from (
select workorder_code workorderCode,
product_code productCode,
product_name productName,
machine_code machineCode,
machine_name machineName,
shift_code shiftCode,
CONVERT(varchar(10),feedback_time, 120) feedbackTime,
sum(quantity_feedback) quantityFeedback,
sum(work_time) workTime,
sum(use_man) useMan,
upload_time uploadTime,
upload_status uploadStatus,
unit
from mes_report_work
where del_flag = '0' and parent_order = '0'
<if test="workorderCode != null and workorderCode != ''"> and workorder_code like concat('%', #{workorderCode}, '%')</if>
<if test="productCode != null and productCode != ''"> and product_code like concat('%', #{productCode}, '%')</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="machineCode != null and machineCode != ''"> and machine_code = #{machineCode}</if>
<if test="machineName != null and machineName != ''"> and machine_name like concat('%', #{machineName}, '%')</if>
<if test="feedbackTimeStart != null "> and CONVERT(varchar(19),feedback_time, 120) >= #{feedbackTimeStart}</if>
<if test="feedbackTimeEnd != null "> and #{feedbackTimeEnd} >= CONVERT(varchar(19),feedback_time, 120)</if>
<if test="uploadStatus != null and uploadStatus != ''"> and upload_status = #{uploadStatus}</if>
group by workorder_code, product_code,product_name,CONVERT(varchar(10),feedback_time, 120),machine_code,machine_name,shift_code,
upload_time,upload_status,unit
) mrw
left join pro_order_workorder pow on mrw.workorderCode = pow.workorder_code
<where>
<if test="orderCode != null and orderCode != ''"> and pow.order_code like concat('%', #{orderCode}, '%')</if>
</where>
order by mrw.feedbackTime desc
</select>
<select id="getReportList" resultType="com.op.mes.domain.MesReportWork">
select
id,
workorder_code workorderCode,
report_code reportCode,
batch,
quantity_feedback quantityFeedback,
unit,
work_time workTime,
use_man useMan,
create_time createTime
from mes_report_work
where del_flag='0'
<if test='parentOrder=="0"'>
and workorder_code = #{workorderCode}
</if>
<if test='parentOrder!="0"'>
and parent_order = #{workorderCode}
</if>
order by end_report
</select>
<select id="getPrepareList" resultType="com.op.mes.domain.MesPrepareDetail">
select
mp.workorder_code workorderCode,
mpd.material_code materialCode,
mpd.material_name materialName,
mpd.quantity,
mpd.unit,
mpd.recoil,
pow.parent_order parentOrder
from mes_prepare mp
left join mes_prepare_detail mpd on mpd.prepare_id = mp.prepare_id
left join pro_order_workorder pow on pow.workorder_code = mp.workorder_code
where (pow.workorder_code = #{workorderCode} or pow.parent_order = #{workorderCode})
and mp.del_flag = '0' and mpd.del_flag = '0'
order by mp.workorder_code
</select>
<insert id="insertMesReportWork" parameterType="MesReportWork">
@ -533,6 +622,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="endReport != null and endReport != ''">#{endReport},</if>
</trim>
</insert>
<insert id="addReportPS">
insert into mes_report_work
(
id,report_type,report_code,
workorder_code,parent_order,
product_code,product_name,
unit,quantity,quantity_feedback,
user_name,nick_name,feedback_channel,
feedback_time,remark,
work_time,use_man,batch,
machine_code,machine_name,shift_code,work_center,
create_by,create_time,del_flag,end_report
)values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id},'UNI',#{item.reportCode},
#{item.workorderCode},#{item.parentOrder},
#{item.productCode},#{item.productName},
#{item.unit},#{item.quantity},#{item.quantityFeedback},
#{item.userName},#{item.nickName},#{item.feedbackChannel},
#{item.feedbackTime},#{item.remark},
#{item.workTime},#{item.useMan},#{item.batch},
#{item.machineCode},#{item.machineName},#{item.shiftId},#{item.workCenter},
#{item.createBy},#{item.createTime},'0',#{item.endReport}
)
</foreach>
</insert>
<update id="updateMesReportWork" parameterType="MesReportWork">
update mes_report_work
@ -582,15 +698,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="uploadMsg != null">upload_msg = #{uploadMsg},</if>
</trim>
where 1=1
<if test="id != null">
and id = #{id}
</if>
<if test="reportCode != null">
and report_code = #{reportCode}
</if>
<if test="id != null">and id = #{id}</if>
<if test="workorderCode != null">and workorder_code = #{workorderCode}</if>
</update>
<update id="updateOrderWorkStatus">
update pro_order_workorder
set status = #{status},
update_by = #{updateBy},
update_time = #{updateTime}
where belong_work_order = #{workorderCode}
</update>
<update id="updateWorkOrderStatus">
update pro_order_workorder set status = #{status} where workorder_code = #{workorderCode}
<update id="submitReportPS">
<foreach collection="list" item="item" separator=";">
update mes_report_work
set quantity_feedback = #{item.quantityFeedback},
work_time = #{item.workTime},
use_man = #{item.useMan},
update_by = #{item.updateBy},
update_time = #{item.updateTime}
where
id = #{item.id}
</foreach>
</update>
<delete id="deleteMesReportWorkById" parameterType="String">

@ -44,18 +44,18 @@ public class OpenController extends BaseController {
}
return openService.requestDestinationStations(wcsdto);
}
/**上位机报工**/
@PostMapping("/reportWork")
public AjaxResult reportWork(@RequestBody MesReportWorkDTO mesReportWork) {
if(StringUtils.isBlank(mesReportWork.getFactoryCode())){
return error("[factoryCode] is null");
}
if(StringUtils.isBlank(mesReportWork.getReportCode())){
return error("[reportCode] is null");
}
return success(openService.reportWork(mesReportWork));
}
// /**上位机报工**/
// @PostMapping("/reportWork")
// public AjaxResult reportWork(@RequestBody MesReportWorkDTO mesReportWork) {
// if(StringUtils.isBlank(mesReportWork.getFactoryCode())){
// return error("[factoryCode] is null");
// }
// if(StringUtils.isBlank(mesReportWork.getReportCode())){
// return error("[reportCode] is null");
// }
//
// return success(openService.reportWork(mesReportWork));
// }
/**获取料罐信息**/
@PostMapping("/getLGInfo")

@ -16,7 +16,7 @@ public interface OpenService {
WCSDTO requestDestinationStations(WCSDTO wcsdto);
R reportWork(MesReportWorkDTO mesReportWork);
// R reportWork(MesReportWorkDTO mesReportWork);
List<WCSDTO> getLGInfo(WCSDTO wcsDTO);
}

@ -153,86 +153,86 @@ public class OpenServiceImpl implements OpenService {
return dto;
}
@Override
public R reportWork(MesReportWorkDTO mesReportWork) {
DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod");
List<MesReportWorkDTO> reportWorks = openMapper.getReportWorkList(mesReportWork);
if(CollectionUtils.isEmpty(reportWorks)){
return R.fail("未查询到报工单");
}
MesReportWorkDTO work = reportWorks.get(0);
SapRFW sapRFW = new SapRFW();
sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号
sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量
SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改
ltgs.setConf_activity1(work.getSac1());//人工
ltgs.setConf_activity2(work.getSac2());
ltgs.setConf_activity3(work.getSac3());//机器
ltgs.setConf_activity4(work.getSac4());
ltgs.setConf_activity5(work.getSac5());//折旧
ltgs.setConf_activity6(work.getSac6());
sapRFW.setLt_gs(ltgs);
List<SapRFW.lt_hw> lt_hwList =new ArrayList<>();
logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng());
MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO();
consumeqo.setWorkorderCode(work.getWorkorderCode());
List<MesReportWorkConsumeDTO> consumes = openMapper.selectMesReportWorkConsumeList(consumeqo);
if(!CollectionUtils.isEmpty(consumes)){
for(MesReportWorkConsumeDTO consume:consumes){
logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+
consume.getMaterialCode()+"|"+consume.getQuantity());
SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改
lthw.setEntry_qnt(consume.getQuantity()+"");//数量
lthw.setMaterial(consume.getMaterialCode());//物料编码
lt_hwList.add(lthw);
}
}else{
logger.info(work.getWorkorderCodeSap()+"母sap工单报工工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据");
//return R.fail("mes_report_work_consume没有数据");
}
sapRFW.setLt_hwList(lt_hwList);
logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求"+ JSONObject.toJSONString(sapRFW));
R r = remoteSapService.sapRFWOrder(sapRFW);
logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg());
//上传成功更改mes_report_work状态
if (r.getCode() == 200) {
work.setUploadStatus("1");
} else {
work.setUploadStatus("2");
work.setUploadMsg(r.getMsg());
}
work.setUploadTime(DateUtils.getNowDate());
openMapper.updateSyncSapStatus(work);
//工单完成数量>工单数量:关闭订单
MesReportWorkDTO proResult = openMapper.getProdResult(work);
//ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode());
if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识
){
logger.info("工单请求关闭调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap());
//工单完成,关闭母工单
List<String> sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单
//关闭母子订单//订单的订单编码
SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery();
sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0));
sapCloseOrderQuery.setOrder(sapWorkOrders.get(1));
R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery);
logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+
sapCloseOrderQuery.getOrder()+":"+
closeR.getCode()+","+
closeR.getMsg()+","+
closeR.getData());
work.setStatus("w3");
work.setUpdateTime(DateUtils.getNowDate());
//pro_work_order status->w3报工--belong_work_order
openMapper.updateWorkOrderStatus(work);
logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功");
}
return R.ok();
}
// @Override
// public R reportWork(MesReportWorkDTO mesReportWork) {
// DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key
// logger.info("上位机开始报工:报工单"+mesReportWork.getReportCode());
// mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
// mesReportWork.setProdType("prod");
// List<MesReportWorkDTO> reportWorks = openMapper.getReportWorkList(mesReportWork);
// if(CollectionUtils.isEmpty(reportWorks)){
// return R.fail("未查询到报工单");
// }
//
// MesReportWorkDTO work = reportWorks.get(0);
// SapRFW sapRFW = new SapRFW();
// sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号
// sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量
// SapRFW.lt_gs ltgs = sapRFW.new lt_gs();//生产订单报工工时修改
// ltgs.setConf_activity1(work.getSac1());//人工
// ltgs.setConf_activity2(work.getSac2());
// ltgs.setConf_activity3(work.getSac3());//机器
// ltgs.setConf_activity4(work.getSac4());
// ltgs.setConf_activity5(work.getSac5());//折旧
// ltgs.setConf_activity6(work.getSac6());
// sapRFW.setLt_gs(ltgs);
// List<SapRFW.lt_hw> lt_hwList =new ArrayList<>();
// //logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng());
// MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO();
// consumeqo.setWorkorderCode(work.getWorkorderCode());
// List<MesReportWorkConsumeDTO> consumes = openMapper.selectMesReportWorkConsumeList(consumeqo);
// if(!CollectionUtils.isEmpty(consumes)){
// for(MesReportWorkConsumeDTO consume:consumes){
// logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+
// consume.getMaterialCode()+"|"+consume.getQuantity());
// SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改
// lthw.setEntry_qnt(consume.getQuantity()+"");//数量
// lthw.setMaterial(consume.getMaterialCode());//物料编码
// lt_hwList.add(lthw);
// }
// }else{
// logger.info(work.getWorkorderCodeSap()+"母sap工单报工工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据");
// //return R.fail("mes_report_work_consume没有数据");
// }
// sapRFW.setLt_hwList(lt_hwList);
// logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求参数"+ JSONObject.toJSONString(sapRFW));
// R r = remoteSapService.sapRFWOrder(sapRFW);
// logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg());
// //上传成功更改mes_report_work状态
// if (r.getCode() == 200) {
// work.setUploadStatus("1");
// } else {
// work.setUploadStatus("2");
// work.setUploadMsg(r.getMsg());
// }
// work.setUploadTime(DateUtils.getNowDate());
// openMapper.updateSyncSapStatus(work);
// //工单完成数量>工单数量:关闭订单
// MesReportWorkDTO proResult = openMapper.getProdResult(work);
// //ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode());
// if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识
// ){
// logger.info("工单请求关闭调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap());
// //工单完成,关闭母工单
// List<String> sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单
// //关闭母子订单//订单的订单编码
// SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery();
// sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0));
// sapCloseOrderQuery.setOrder(sapWorkOrders.get(1));
// R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery);
// logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+
// sapCloseOrderQuery.getOrder()+":"+
// closeR.getCode()+","+
// closeR.getMsg()+","+
// closeR.getData());
// work.setStatus("w3");
// work.setUpdateTime(DateUtils.getNowDate());
// //pro_work_order status->w3报工--belong_work_order
// openMapper.updateWorkOrderStatus(work);
// logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功");
// }
// return R.ok();
// }
@Override
public List<WCSDTO> getLGInfo(WCSDTO wcsDTO) {

@ -11,6 +11,7 @@ import java.util.stream.Collectors;
import com.alibaba.csp.sentinel.util.StringUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.utils.ServletUtils;
import com.op.plan.domain.vo.CascaderDTO;
import com.baomidou.dynamic.datasource.annotation.DS;
@ -93,7 +94,6 @@ public class ProOrderServiceImpl implements IProOrderService {
* @return
*/
@Override
@Transactional
@DS("#header.poolName")
public AjaxResult subSplitOrder(SplitOrderDTO splitOrderDTO) {
boolean checkout = true;
@ -294,8 +294,12 @@ public class ProOrderServiceImpl implements IProOrderService {
R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
logger.info("母订单"+proOrder.getOrderCode()+
"订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg());
}else{
workOrder.setProductCode(splitOrderDTO.getProduct().getChildren().get(0).getProdCode());
workOrder.setProductName(splitOrderDTO.getProduct().getChildren().get(0).getProdDesc());
}
workOrder.setBelongWorkOrder(belongWorkOrder);
workOrder.setProdType("LJ01");
// 将工单信息更新至数据库
proOrderWorkorderMapper.insertProOrderWorkorder(workOrder);
@ -437,15 +441,15 @@ public class ProOrderServiceImpl implements IProOrderService {
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如20230923
}
//添加调用sap日志
SysSapLog sysSapLog = new SysSapLog();
sysSapLog.setId(IdUtils.fastSimpleUUID());
sysSapLog.setMesssge(sapqo.toString());
sysSapLog.setMethod("syncSAP");
sysSapLog.setReqcode("请求");
sysSapLog.setCreateTime(DateUtils.getNowDate());
proOrderMapper.addSapLog(sysSapLog);
// //添加调用sap日志
// SysSapLog sysSapLog = new SysSapLog();
// sysSapLog.setId(IdUtils.fastSimpleUUID());
// sysSapLog.setMesssge(sapqo.toString());
// sysSapLog.setMethod("syncSAP");
// sysSapLog.setReqcode("请求");
// sysSapLog.setCreateTime(DateUtils.getNowDate());
// proOrderMapper.addSapLog(sysSapLog);
logger.info("手动订单同步:【参数】"+ JSONObject.toJSONString(sapqo));
//取>=20230923的sap数据
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据
@ -461,12 +465,14 @@ public class ProOrderServiceImpl implements IProOrderService {
String failOrder = "";
ProOrder proOrder = null;
for (SapProOrder sapProOrder:newOrders) {
//工单生产后整个订单就被锁定//订单存在就更新,不存在就插入
proOrder = new ProOrder();
BeanUtils.copyProperties(sapProOrder, proOrder);
proOrder.setSyncUser(syncUser);
proOrder.setProdType("prod");//只有白坯有导入
failOrder += syncFunc(proOrder);
if("LJ88".equals(sapProOrder.getOrderType())){
//工单生产后整个订单就被锁定//订单存在就更新,不存在就插入
proOrder = new ProOrder();
BeanUtils.copyProperties(sapProOrder, proOrder);
proOrder.setSyncUser(syncUser);
proOrder.setProdType("prod");//只有白坯有导入
failOrder += syncFunc(proOrder);
}
}
return failOrder;
}

@ -1,6 +1,7 @@
package com.op.plan.service.impl;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.context.SecurityContextHolder;
@ -224,7 +225,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
*/
@Override
@DS("#header.poolName")
@Transactional(rollbackFor = Exception.class)
//@Transactional(rollbackFor = Exception.class)
public int downProOrderWorkorderByWorkorderIds(String[] workorderIds) {
List<SapCreateOrder> sapList = null;//回传给sap的工单
//如果是白坯生成备料单
@ -299,22 +300,14 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
sapList = new ArrayList<>();
SapCreateOrder sap = new SapCreateOrder();
sap.setWerks(whiteOrder.getFactoryCode());//工厂编码
sap.setAufpar(whiteOrder.getProdType());//订单类型
sap.setAufpar("LJ01");//订单类型
sap.setMatnr(whiteOrder.getProductCode());//物料编号
sap.setQuantity(whiteOrder.getQuantitySplit() + "");//数量
sap.setDates(DateUtils.parseDateToStr("yyyy-MM-dd", whiteOrder.getProductDate()));//开始时间
sap.setDatee(DateUtils.parseDateToStr("yyyy-MM-dd", whiteOrder.getProductDate()));//完成时间
sapList.add(sap);
//添加调用sap日志
// SysSapLog sysSapLog = new SysSapLog();
// sysSapLog.setId(IdUtils.fastSimpleUUID());
// sysSapLog.setMesssge(Arrays.asList(sapList).toString());
// sysSapLog.setMethod("downProOrderWorkorderByWorkorderIds");
// sysSapLog.setReqcode("请求");
// sysSapLog.setCreateTime(DateUtils.getNowDate());
// proOrderMapper.addSapLog(sysSapLog);
logger.info(whiteOrder.getWorkorderCode()+"sap工单回传sap虚拟工单号开始"+Arrays.asList(sapList).toString());
logger.info(whiteOrder.getWorkorderCode()+"sap工单回传sap工单号开始"+ JSONObject.toJSONString(sapList));
R<List<Map<String, String>>> r = remoteSapService.SapCreateOrder(sapList);
logger.info("sap工单回传" + r.getMsg());
if (500 == r.getCode()) {
@ -329,7 +322,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
}
Date updateTime = DateUtils.getNowDate();
if (!CollectionUtils.isEmpty(returnCodes)) {
logger.info("sap工单回传sap虚拟工单号结束:" + StringUtils.join(returnCodes, ","));
logger.info("sap工单回传sap工单号结束:" + StringUtils.join(returnCodes, ","));
//按照母子顺序进行更新
for (int m=0;m<returnCodes.size();m++) {
ProOrderWorkorder oworkSap = new ProOrderWorkorder();
@ -381,22 +374,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
Date createDate = DateUtils.getNowDate();
for (int m = 0;m<sapWorkOrders.size();m++) {
logger.info("获取sap领料单" + sapWorkOrders.get(m)+"开始");
// //添加调用sap日志
// SysSapLog sysSapLog = new SysSapLog();
// sysSapLog.setId(IdUtils.fastSimpleUUID());
// sysSapLog.setMesssge(sapWorkOrder);
// sysSapLog.setMethod("getMesPrepare");
// sysSapLog.setReqcode("请求");
// sysSapLog.setCreateTime(DateUtils.getNowDate());
// proOrderMapper.addSapLog(sysSapLog);
List<SapMaterialPreparation> sapMaterialPreparationList = remoteSapService.materialPreparation(sapWorkOrders.get(m)).getData();
if (CollectionUtils.isEmpty(sapMaterialPreparationList)) {
System.out.println("sap无领料单数据");
}
//取出各领料单
String orderCode = sapWorkOrders.get(m);
logger.info("sap虚拟工单码:"+orderCode);
logger.info("sap工单码"+orderCode);
/**mes_prepare**/
String mesPrepareId = IdUtils.fastSimpleUUID();
MesPrepareDTO mesPrepare0 = new MesPrepareDTO();
@ -436,7 +420,10 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
sap.getMEINS()+","+sap.getRGEKZ()+","+sap.getDBSKZ()
);
}
proOrderWorkorderMapper.insertMesPrepareDetails(details);
if(!CollectionUtils.isEmpty(details)){
proOrderWorkorderMapper.insertMesPrepareDetails(details);
}
logger.info("获取sap领料单" + sapWorkOrders.get(m)+"结束");
}
}

@ -457,9 +457,9 @@
</insert>
<insert id="insertMesPrepareDetails">
INSERT INTO mes_prepare_detail (
record_id,prepare_id,material_code,material_name,unit,
quantity,create_by,create_time,factory_code,status,
locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order
record_id,prepare_id,material_code,material_name,unit,
quantity,create_by,create_time,factory_code,status,
locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order
)VALUES
<foreach collection="list" item="d" index="index" separator=",">
(

@ -18,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
@ -46,6 +48,9 @@ public class QuaController extends BaseController {
@Autowired
private IQcCheckTaskIncomeService qcCheckTaskIncomeService;
@Autowired
private IQcCheckUnqualifiedService qcCheckUnqualifiedService;
@PostMapping("/saveQcProCheck")
public R<Boolean> saveQcProCheck(@RequestBody QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode());
@ -244,4 +249,13 @@ public class QuaController extends BaseController {
List<QcCheckTypeProject> list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject);
return getDataTable(list);
}
@GetMapping("/getUnqualifiedList")
public TableDataInfo getUnqualifiedList(QcCheckUnqualified qcCheckUnqualified) {
DynamicDataSourceContextHolder.push("ds_"+qcCheckUnqualified.getFactoryCode());
startPage();
qcCheckUnqualified.setDelFlag("0");
List<QcCheckUnqualified> list = qcCheckUnqualifiedService.selectQcCheckUnqualifiedList(qcCheckUnqualified);
return getDataTable(list);
}
}

@ -63,4 +63,12 @@ public interface QcCheckUnqualifiedMapper {
public int deleteQcCheckUnqualifiedByIds(String[] ids);
public List<QcDefectType> getDefectList(QcDefectType qcDefectType);
/**
*
*
* @param qcCheckUnqualified
* @return
*/
public List<QcCheckUnqualified> getUnqualifiedList(QcCheckUnqualified qcCheckUnqualified);
}

@ -73,6 +73,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from qc_defect_type
where defect_type = #{defectType} and del_flag='0'
</select>
<select id="getUnqualifiedList" resultType="com.op.quality.domain.QcCheckUnqualified">
select qcu.id,qcu.task_id taskId,qcu.status,qcu.next_node_code nextNodeCode,qcu.next_node_name nextNodeName,qcu.remark,
qcu.create_time createTime,
qct.check_type checkType,qtn.check_name checkName,qct.check_no checkNo,qct.income_batch_no incomeBatchNo,qct.order_no orderNo,
qct.material_code materialCode,qct.material_name materialName,qct.quality,qct.unit,qct.supplier_code supplierCode,
qct.supplier_name supplierName,qct.income_time incomeTime,qct.check_loc checkLoc,qct.check_status checkStatus,qct.check_man_code checkManCode,
qct.check_man_name checkManName,qct.check_time checkTime,qct.check_result checkResult
from qc_check_unqualified qcu
left join qc_check_task qct on qcu.task_id = qct.record_id
left join qc_check_type qtn on qtn.id = qct.check_type
where qcu.id = #{id}
</select>
<insert id="insertQcCheckUnqualified" parameterType="QcCheckUnqualified">
insert into qc_check_unqualified

Loading…
Cancel
Save