Merge remote-tracking branch 'origin/master'

# Conflicts:
#	op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java
orign^2
wws 1 year ago
commit 9034a8188c

@ -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.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -185,6 +186,52 @@ public class ProOrderWorkorderDTO extends TreeEntity {
// 供湿料计划使用 // 供湿料计划使用
private String bucketName1; 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() { public String getMaterialName1() {
return materialName1; return materialName1;
} }

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

@ -128,9 +128,11 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
new LinkedBlockingQueue<Runnable>()); new LinkedBlockingQueue<Runnable>());
try { try {
dateSources.forEach(dateSource -> { dateSources.forEach(dateSource -> {
logger.info("++++++++++++" + dateSource.get("poolName") + "++++巡检开始++++++++++"); //if("ds_1000".equals(dateSource.get("poolName"))){//TODO生产去掉
Runnable run = () -> createPatrolCheckPlanFunc(dateSource.get("poolName")); logger.info("++++++++++++" + dateSource.get("poolName") + "++++巡检开始++++++++++");
executorService.execute(run); Runnable run = () -> createPatrolCheckPlanFunc(dateSource.get("poolName"));
executorService.execute(run);
//}
}); });
} catch (Exception e) { } catch (Exception e) {
logger.error("service == dataClearTask == exception", e); logger.error("service == dataClearTask == exception", e);
@ -172,19 +174,19 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
return success(); return success();
} }
public void createSpotCheckPlanFunc(String poolName) { public void createSpotCheckPlanFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/ /**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan(); EquPlan equPlan = new EquPlan();
equPlan.setPlanType("spotInspection"); equPlan.setPlanType("spotInspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan); List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
for (EquPlan plan : plans) { for(EquPlan plan:plans){
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan); EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays()) { if(hasTask==null || Integer.parseInt(plan.getPlanLoop())<= hasTask.getDays()){
//生成点检计划 //生成点检计划
int m = this.createOrderPlan(plan); int m = this.createOrderPlan(plan);
if (m == 0) { if(m==0){
error("equ_order相关添加失败"); error("equ_order相关添加失败");
} }
} }
@ -192,19 +194,19 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
logger.info("++++++++++++" + poolName + "++++点检结束++++++++++"); logger.info("++++++++++++" + poolName + "++++点检结束++++++++++");
} }
public void createPatrolCheckPlanFunc(String poolName) { public void createPatrolCheckPlanFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/ /**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan(); EquPlan equPlan = new EquPlan();
equPlan.setPlanType("inspection"); equPlan.setPlanType("inspection");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan); List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
for (EquPlan plan : plans) { for(EquPlan plan:plans){
EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan); EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan);
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays()) { if(hasTask==null || Integer.parseInt(plan.getPlanLoop())<= hasTask.getDays()){
//生成巡检计划 //生成巡检计划
int m = this.createOrderPlan(plan); int m = this.createOrderPlan(plan);
if (m == 0) { if(m==0){
error("equ_order相关添加失败"); error("equ_order相关添加失败");
} }
} }
@ -212,29 +214,29 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
logger.info("++++++++++++" + poolName + "++++巡检结束++++++++++"); logger.info("++++++++++++" + poolName + "++++巡检结束++++++++++");
} }
public void createMaintenancePlanFunc(String poolName) { public void createMaintenancePlanFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
/**equ_plan equ_plan_equ**/ /**equ_plan equ_plan_equ**/
EquPlan equPlan = new EquPlan(); EquPlan equPlan = new EquPlan();
equPlan.setPlanType("maintenance"); equPlan.setPlanType("maintenance");
List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan); List<EquPlan> plans = deviceTaskMapper.getPlans(equPlan);
for (EquPlan plan : plans) { for(EquPlan plan:plans){
EquOrder hasTask = null; EquOrder hasTask = null;
if ("1".equals(plan.getCalculationRule())) { if("1".equals(plan.getCalculationRule())){
//根据order_start//1按上次保养时间 //根据order_start//1按上次保养时间
hasTask = deviceTaskMapper.getNewTaskOrder0(plan); hasTask = deviceTaskMapper.getNewTaskOrder0(plan);
} else if ("0".equals(plan.getCalculationRule())) { }else if("0".equals(plan.getCalculationRule())){
//根据createTime//0按固定周期 //根据createTime//0按固定周期
hasTask = deviceTaskMapper.getNewTaskOrder(plan); hasTask = deviceTaskMapper.getNewTaskOrder(plan);
} else if ("2".equals(plan.getCalculationRule())) { }else if("2".equals(plan.getCalculationRule())){
//单次生成保养计划 //单次生成保养计划
} }
if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays()) { if(hasTask==null || Integer.parseInt(plan.getPlanLoop())<= hasTask.getDays()){
//生成保养计划 //生成保养计划
int m = this.createOrderPlan(plan); int m = this.createOrderPlan(plan);
if (m == 0) { if(m==0){
error("equ_order相关添加失败"); error("equ_order相关添加失败");
} }
} }
@ -242,7 +244,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
logger.info("++++++++++++" + poolName + "++++保养结束++++++++++"); logger.info("++++++++++++" + poolName + "++++保养结束++++++++++");
} }
private int createOrderPlan(EquPlan plan) { private int createOrderPlan(EquPlan plan){
Date nowtime = DateUtils.getNowDate(); Date nowtime = DateUtils.getNowDate();
String createBy = "job"; String createBy = "job";
String factory = plan.getFactoryCode(); String factory = plan.getFactoryCode();
@ -250,21 +252,21 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
/**equ_plan->equ_order********************************************************************/ /**equ_plan->equ_order********************************************************************/
EquOrder order = new EquOrder(); EquOrder order = new EquOrder();
//源->目标 //源->目标
BeanUtils.copyProperties(plan, order); BeanUtils.copyProperties(plan,order);
order.setOrderId(IdUtils.fastSimpleUUID()); order.setOrderId(IdUtils.fastSimpleUUID());
order.setCreateBy(createBy); order.setCreateBy(createBy);
order.setCreateTime(nowtime); order.setCreateTime(nowtime);
// 流水号 // 流水号
String serialNum = String.format("%03d", equOrderMapper.selectSerialNumber()); String serialNum = String.format("%03d",equOrderMapper.selectSerialNumber());
String orderCode = "O" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + serialNum; String orderCode = "O"+DateUtils.dateTimeNow(DateUtils.YYYYMMDD)+serialNum;
order.setOrderCode(orderCode); order.setOrderCode(orderCode);
if ("1".equals(plan.getUpkeep())) {//1委外工单 if("1".equals(plan.getUpkeep())) {//1委外工单
order.setOutsourceCode("BW" + orderCode); order.setOutsourceCode("BW"+orderCode);
} }
/**equ_order**/ /**equ_order**/
sce = equOrderMapper.insertEquOrder(order); sce = equOrderMapper.insertEquOrder(order);
System.out.println(plan.getPlanCode() + "========equ_order:" + sce); System.out.println(plan.getPlanCode()+"========equ_order:"+sce);
/**equ_plan_equ_spare->equ_spare_apply*************************************************************/ /**equ_plan_equ_spare->equ_spare_apply*************************************************************/
EquPlanEquSpare equPlanEquSpare = new EquPlanEquSpare(); EquPlanEquSpare equPlanEquSpare = new EquPlanEquSpare();
equPlanEquSpare.setParentCode(plan.getPlanEquId()); equPlanEquSpare.setParentCode(plan.getPlanEquId());
@ -275,7 +277,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
for (EquPlanEquSpare spare : spares) { for (EquPlanEquSpare spare : spares) {
EquSpareApply apply = new EquSpareApply(); EquSpareApply apply = new EquSpareApply();
apply.setApplyId(IdUtils.fastSimpleUUID()); apply.setApplyId(IdUtils.fastSimpleUUID());
apply.setApplyCode("A" + orderCode + String.format("%02d", applySerialNum)); apply.setApplyCode("A"+orderCode+String.format("%02d",applySerialNum));
applySerialNum++; applySerialNum++;
apply.setSpareCode(spare.getMaterialCode()); apply.setSpareCode(spare.getMaterialCode());
apply.setSpareName(spare.getMaterialDesc()); apply.setSpareName(spare.getMaterialDesc());
@ -309,13 +311,13 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
List<EquPlanStandard> standards = new ArrayList<>(); List<EquPlanStandard> standards = new ArrayList<>();
List<EquPlanStandard> standards0 = null; List<EquPlanStandard> standards0 = null;
for (EquPlanDetail itme : details) { for(EquPlanDetail itme:details){
String detailId = IdUtils.fastSimpleUUID(); String detailId = IdUtils.fastSimpleUUID();
EquPlanStandard standardqo = new EquPlanStandard(); EquPlanStandard standardqo = new EquPlanStandard();
//equ_plan_detail的id //equ_plan_detail的id
standardqo.setParentCode(itme.getId()); standardqo.setParentCode(itme.getId());
standards0 = equPlanStandardMapper.selectEquPlanStandardList(standardqo); standards0 = equPlanStandardMapper.selectEquPlanStandardList(standardqo);
for (EquPlanStandard standard : standards0) { for(EquPlanStandard standard:standards0) {
standard.setId(IdUtils.fastSimpleUUID()); standard.setId(IdUtils.fastSimpleUUID());
standard.setCreateTime(nowtime); standard.setCreateTime(nowtime);
standard.setCreateBy(createBy); standard.setCreateBy(createBy);
@ -331,19 +333,19 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
itme.setDelFlag("0"); itme.setDelFlag("0");
itme.setParentCode(orderCode); itme.setParentCode(orderCode);
} }
if (!CollectionUtils.isEmpty(details)) { if(!CollectionUtils.isEmpty(details)) {
sce = equOrderDetailMapper.insertEquOrderDetails(details); sce = equOrderDetailMapper.insertEquOrderDetails(details);
System.out.println(plan.getPlanCode() + "========equ_order_detail:" + sce); System.out.println(plan.getPlanCode() + "========equ_order_detail:" + sce);
} }
/**equ_plan_standard->equ_order_standard*******************************************************/ /**equ_plan_standard->equ_order_standard*******************************************************/
if (!CollectionUtils.isEmpty(standards)) { if(!CollectionUtils.isEmpty(standards)) {
sce = equOrderStandardMapper.insertEquOrderStandards(standards); sce = equOrderStandardMapper.insertEquOrderStandards(standards);
System.out.println(plan.getPlanCode() + "========equ_order_standard:" + sce); System.out.println(plan.getPlanCode() + "========equ_order_standard:" + sce);
} }
/**equ_plan_person->equ_order_standard*********************************************************/ /**equ_plan_person->equ_order_standard*********************************************************/
if ("1".equals(plan.getUpkeep())) {//1委外 if("1".equals(plan.getUpkeep())){//1委外
EquOutsourceWork equOutsourceWork = new EquOutsourceWork(); EquOutsourceWork equOutsourceWork = new EquOutsourceWork();
BeanUtils.copyProperties(plan, equOutsourceWork); BeanUtils.copyProperties(plan,equOutsourceWork);
equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID()); equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID());
equOutsourceWork.setWorkCode(order.getOutsourceCode()); equOutsourceWork.setWorkCode(order.getOutsourceCode());
equOutsourceWork.setWorkType("1");//1委外保养0委外维修 equOutsourceWork.setWorkType("1");//1委外保养0委外维修
@ -353,7 +355,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService {
equOutsourceWork.setRepairCode(orderCode); equOutsourceWork.setRepairCode(orderCode);
sce = equOutsourceWorkMapper.insertEquOutsourceWork(equOutsourceWork); sce = equOutsourceWorkMapper.insertEquOutsourceWork(equOutsourceWork);
System.out.println(plan.getPlanCode() + "========equ_outsource_work:" + sce); System.out.println(plan.getPlanCode() + "========equ_outsource_work:" + sce);
} else { }else {
EquPlanPerson equPlanPerson = new EquPlanPerson(); EquPlanPerson equPlanPerson = new EquPlanPerson();
equPlanPerson.setPlanCode(plan.getPlanCode()); equPlanPerson.setPlanCode(plan.getPlanCode());
List<EquPlanPerson> persons = equPlanPersonMapper.selectEquPlanPersonList(equPlanPerson); List<EquPlanPerson> persons = equPlanPersonMapper.selectEquPlanPersonList(equPlanPerson);

@ -4,6 +4,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.op.common.core.utils.uuid.IdUtils; 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.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO; import com.op.system.api.domain.mes.BaseTeamTDTO;
@ -135,4 +136,21 @@ public class MesReportWorkConsumeController extends BaseController {
List<BaseTeamTDTO> list = mesReportWorkConsumeService.getTeamList(dto); List<BaseTeamTDTO> list = mesReportWorkConsumeService.getTeamList(dto);
return list; 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"; // String dateEndStr = dtf.format(dateEnd)+" 00:00:00";
// mesReportWork.setCreateTimeEnd(dateEndStr);//end // mesReportWork.setCreateTimeEnd(dateEndStr);//end
// } // }
List<MesReportWork> list = mesReportWorkService.selectMesReportWorkList(mesReportWork); // List<MesReportWork> list = mesReportWorkService.selectMesReportWorkList(mesReportWork);
return getDataTable(list); List<MesReportWork> hzlist = mesReportWorkService.getReportWorkHzList(mesReportWork);
return getDataTable(hzlist);
} }
/** /**
@ -369,6 +370,26 @@ public class MesReportWorkController extends BaseController {
return mesReportWorkService.getBatchList(ProOrderWorkorder); 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[]){ public static void main(String args[]){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
try { try {

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

@ -2,6 +2,8 @@ package com.op.mes.domain;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
@ -80,6 +82,7 @@ public class MesReportWork extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date feedbackTime; private Date feedbackTime;
private String feedbackTimeStr;
/** 录入人员 */ /** 录入人员 */
@Excel(name = "录入人员") @Excel(name = "录入人员")
@ -165,6 +168,131 @@ public class MesReportWork extends BaseEntity {
private String feedbackTimeEnd; private String feedbackTimeEnd;
private String batch; private String batch;
private String endReport; 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() { public String getEndReport() {
return endReport; 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.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity; import com.op.common.core.web.domain.BaseEntity;
import java.math.BigDecimal;
/** /**
* mes_report_work_consume * mes_report_work_consume
* *
* @author Open Platform * @author Open Platform
* @date 2023-08-24 * @date 2023-08-24
*/ */
@ -35,7 +37,7 @@ public class MesReportWorkConsume extends BaseEntity {
/** 数量 */ /** 数量 */
@Excel(name = "数量") @Excel(name = "数量")
private Long quantity; private BigDecimal quantity;
/** 单位 */ /** 单位 */
@Excel(name = "单位") @Excel(name = "单位")
@ -67,6 +69,33 @@ public class MesReportWorkConsume extends BaseEntity {
//虚拟字段 //虚拟字段
private String id; 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) { public void setRecordId(String recordId) {
this.recordId = recordId; this.recordId = recordId;
@ -111,13 +140,15 @@ public class MesReportWorkConsume extends BaseEntity {
public String getMaterialSpc() { public String getMaterialSpc() {
return materialSpc; return materialSpc;
} }
public void setQuantity(Long quantity) {
this.quantity = quantity;
}
public Long getQuantity() { public BigDecimal getQuantity() {
return quantity; return quantity;
} }
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public void setUnit(String unit) { public void setUnit(String unit) {
this.unit = unit; this.unit = unit;
} }

@ -69,4 +69,10 @@ public interface MesReportWorkConsumeMapper {
List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto); List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto);
int insertMesReportWorkConsumes(@Param("list") List<MesReportWorkConsume> mesReportWorkConsumes); 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 com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* Mapper * Mapper
@ -71,7 +72,7 @@ public interface MesReportWorkMapper {
public List<MesReportProduction> getProductionList(MesReportProduction mesReportProduction); public List<MesReportProduction> getProductionList(MesReportProduction mesReportProduction);
public List<MesReportWork> getReportWorkList(MesReportWork mesReportWork); public List<MesReportWork> getReportWork(MesReportWork mesReportWork);
public void updateSyncSapStatus(MesReportWork work); public void updateSyncSapStatus(MesReportWork work);
@ -81,7 +82,7 @@ public interface MesReportWorkMapper {
List<SysFactoryDto> getWorkcenterList(MesDailyReport mesDailyReport); List<SysFactoryDto> getWorkcenterList(MesDailyReport mesDailyReport);
public void updateWorkOrderStatus(MesReportWork work); public void updateOrderWorkStatus(MesReportWork work);
@MapKey("nameDate") @MapKey("nameDate")
Map<String,MesReportProduction> getLineChartsDatas(MesReportProduction mesReportProduction); Map<String,MesReportProduction> getLineChartsDatas(MesReportProduction mesReportProduction);
@ -109,5 +110,15 @@ public interface MesReportWorkMapper {
List<ProOrderWorkorder> getBatchList(ProOrderWorkorder proOrderWorkorder); 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; package com.op.mes.service;
import java.util.List; import java.util.List;
import com.op.mes.domain.MesReportWork;
import com.op.mes.domain.MesReportWorkConsume; import com.op.mes.domain.MesReportWorkConsume;
import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseProductDTO;
@ -74,4 +76,10 @@ public interface IMesReportWorkConsumeService {
public List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto); public List<BaseTeamTDTO> getTeamList(BaseTeamTDTO dto);
int insertMesReportWorkConsumes(List<MesReportWorkConsume> mesReportWorkConsumes); 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); R reportSap(MesReportWork mesReportWork);
List<ProOrderWorkorder> getBatchList(ProOrderWorkorder proOrderWorkorder); 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.bean.BeanUtils;
import com.op.common.core.utils.http.HttpUtils; import com.op.common.core.utils.http.HttpUtils;
import com.op.common.core.utils.uuid.IdUtils; 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.*;
import com.op.mes.domain.buffer.JsonRootBean; import com.op.mes.domain.buffer.JsonRootBean;
import com.op.mes.domain.dto.LGInfoDto; import com.op.mes.domain.dto.LGInfoDto;
@ -281,103 +282,117 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
return R.ok(true); return R.ok(true);
} }
/****
*
*
* @param mesReportWork
* @return
*/
@Override @Override
public R reportWork(MesReportWork mesReportWork) { public R reportWork(MesReportWork mesReportWork) {
String belongWorkOrder = mesReportWork.getWorkorderCode();
if(StringUtils.isNotBlank(mesReportWork.getFactoryCode())){//已经加上ds_ if(StringUtils.isNotBlank(mesReportWork.getFactoryCode())){//已经加上ds_
DynamicDataSourceContextHolder.push(mesReportWork.getFactoryCode());// 这是数据源的key 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.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod"); 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)){ 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 sapRFW = new SapRFW();
sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 sapRFW.setAufnr(workOrder.getWorkorderCodeSap());//虚拟工单号
sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 sapRFW.setGamng(workOrder.getQuantityFeedback().toString());//报工数量
SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改 SapRFW.lt_gs ltgs = new SapRFW.lt_gs();//生产订单报工工时修改
ltgs.setConf_activity1(work.getSac1());//人工 ltgs.setConf_activity1(workOrder.getSac1());//人工
ltgs.setConf_activity2(work.getSac2()); ltgs.setConf_activity2(workOrder.getSac2());
ltgs.setConf_activity3(work.getSac3());//机器 ltgs.setConf_activity3(workOrder.getSac3());//机器
ltgs.setConf_activity4(work.getSac4()); ltgs.setConf_activity4(workOrder.getSac4());
ltgs.setConf_activity5(work.getSac5());//折旧 ltgs.setConf_activity5(workOrder.getSac5());//折旧
ltgs.setConf_activity6(work.getSac6()); ltgs.setConf_activity6(workOrder.getSac6());
sapRFW.setLt_gs(ltgs); sapRFW.setLt_gs(ltgs);
List<SapRFW.lt_hw> lt_hwList =new ArrayList<>(); List<SapRFW.lt_hw> lt_hwList =new ArrayList<>();
logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng());
MesReportWorkConsume consumeqo = new MesReportWorkConsume(); MesReportWorkConsume consumeqo = new MesReportWorkConsume();
consumeqo.setWorkorderCode(work.getWorkorderCode()); consumeqo.setWorkorderCode(workOrder.getWorkorderCode());
List<MesReportWorkConsume> consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo); List<MesReportWorkConsume> consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo);
if(!CollectionUtils.isEmpty(consumes)){ if(!CollectionUtils.isEmpty(consumes)){
for(MesReportWorkConsume consume:consumes){ for(MesReportWorkConsume consume:consumes){
logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+ SapRFW.lt_hw lthw = new SapRFW.lt_hw();//MES生产订单报工货物移动修改
consume.getMaterialCode()+"|"+consume.getQuantity());
SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改
lthw.setEntry_qnt(consume.getQuantity()+"");//数量 lthw.setEntry_qnt(consume.getQuantity()+"");//数量
lthw.setMaterial(consume.getMaterialCode());//物料编码 lthw.setMaterial(consume.getMaterialCode());//物料编码
lt_hwList.add(lthw); lt_hwList.add(lthw);
} }
}else{ }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没有数据"); return R.fail("mes_report_work_consume没有数据");
} }
sapRFW.setLt_hwList(lt_hwList); sapRFW.setLt_hwList(lt_hwList);
logger.info(workOrder.getWorkorderCodeSap()+"sap工单报工请求"+JSONObject.toJSONString(sapRFW));
R r = remoteSapService.sapRFWOrder(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状态 //上传成功更改mes_report_work状态
if (r.getCode() == 200) { if (r.getCode() == 200) {
work.setUploadStatus("1"); workOrder.setUploadStatus("1");
} else { } else {
work.setUploadStatus("2"); workOrder.setUploadStatus("2");
work.setUploadMsg(r.getMsg()); workOrder.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.setUploadTime(DateUtils.getNowDate());
mesReportWorkMapper.updateSyncSapStatus(workOrder);
return R.ok(); 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){ public void dateBKFunc(String poolName,List<String> tables){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key

@ -1,18 +1,28 @@
package com.op.mes.service.impl; package com.op.mes.service.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils; 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.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.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.op.mes.mapper.MesReportWorkConsumeMapper; import com.op.mes.mapper.MesReportWorkConsumeMapper;
import com.op.mes.domain.MesReportWorkConsume; import com.op.mes.domain.MesReportWorkConsume;
import com.op.mes.service.IMesReportWorkConsumeService; import com.op.mes.service.IMesReportWorkConsumeService;
import org.springframework.util.CollectionUtils;
/** /**
* Service * Service
@ -22,9 +32,13 @@ import com.op.mes.service.IMesReportWorkConsumeService;
*/ */
@Service @Service
public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeService { public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeService {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
private MesReportWorkConsumeMapper mesReportWorkConsumeMapper; private MesReportWorkConsumeMapper mesReportWorkConsumeMapper;
@Autowired
private MesReportWorkMapper mesReportWorkMapper;
/** /**
* *
* *
@ -135,4 +149,99 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer
return mesReportWorkConsumeMapper.getTeamList(dto); 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.domain.R;
import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.ServletUtils; import com.op.common.core.utils.ServletUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.*; import com.op.mes.domain.*;
import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartDto;
import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.LineChartSeriesDto;
@ -128,6 +129,46 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return mesReportWorkMapper.getBatchList(proOrderWorkorder); return mesReportWorkMapper.getBatchList(proOrderWorkorder);
} }
@Override
@DS("#header.poolName")
public List<MesReportWork> getReportWorkHzList(MesReportWork mesReportWork) {
List<MesReportWork> dtos = mesReportWorkMapper.getReportWorkHzList(mesReportWork);
for(MesReportWork dto:dtos){
if("1".equals(dto.getUploadStatus())){
dto.setUploadStatus("sap报工成功");
}else if("2".equals(dto.getUploadStatus())){
dto.setUploadStatus("sap报工失败");
}else if("0".equals(dto.getUploadStatus())){
dto.setUploadStatus("待报工sap");
}
}
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 +443,8 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return dtos; return dtos;
} }
public static void main(String[] args) { public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime(); Date now = calendar.getTime();

@ -82,8 +82,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from base_team_t from base_team_t
where del_flag = '0' where del_flag = '0'
</select> </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 insert into mes_report_work_consume
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if> <if test="recordId != null">record_id,</if>
@ -137,6 +155,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</insert> </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 id="updateMesReportWorkConsume" parameterType="MesReportWorkConsume">
update mes_report_work_consume update mes_report_work_consume
@ -161,6 +194,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim> </trim>
where record_id = #{recordId} where record_id = #{recordId}
</update> </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"> <delete id="deleteMesReportWorkConsumeByRecordId" parameterType="String">
update mes_report_work_consume 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="endFlag" column="end_flag" />
<result property="carNum" column="car_num" /> <result property="carNum" column="car_num" />
<result property="sortNo" column="sort_no" /> <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> </resultMap>
<sql id="selectMesReportWorkVo"> <sql id="selectMesReportWorkVo">
select id, report_type, report_code, workorder_code, product_code, 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="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> <if test="productDateEnd != null "> and #{productDateEnd} >= CONVERT(varchar(10),mrw.feedback_time, 120)</if>
</select> </select>
<select id="getReportWorkList" resultType="com.op.mes.domain.MesReportWork"> <select id="getReportWork" resultType="com.op.mes.domain.MesReportWork">
select select
ow.order_code orderCode, ow.order_code orderCode,
ow.workorder_code workorderCode, 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_order_workorder ow on mrw.workorder_code = ow.workorder_code
left join pro_route rte on rte.route_code = ow.route_code left join pro_route rte on rte.route_code = ow.route_code
where mrw.upload_status != #{uploadStatus} and mrw.prod_type = #{prodType} where mrw.upload_status != #{uploadStatus} and mrw.prod_type = #{prodType}
<if test="reportCode != null "> <if test="workorderCode != null ">
and mrw.report_code = #{reportCode} and mrw.workorder_code = #{workorderCode}
</if> </if>
order by mrw.create_time order by mrw.create_time
</select> </select>
@ -421,14 +428,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
pow.product_spc, pow.unit, pow.quantity_split, pow.product_spc, pow.unit, pow.quantity_split,
pow.route_code, pow.prod_line_code, pow.product_date, pow.route_code, pow.prod_line_code, pow.product_date,
pow.shift_id, pow.parent_order, pow.status, pow.remark, 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 from pro_order_workorder pow
left join base_shifts_t s on pow.shift_id = s.Shift_Id 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' 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 != ''"> <if test="workorderCode != null and workorderCode != ''">
and pow.workorder_code like concat('%', #{workorderCode}, '%') and pow.workorder_code like concat('%', #{workorderCode}, '%')
</if> </if>
order by pow.product_date desc
</select> </select>
<select id="getEquipInfoByCodes" resultType="com.op.system.api.domain.device.EquEquipmentDTO"> <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 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' where powb.del_flag = '0' and pow.del_flag = '0'
and pow.workorder_code = #{workorderCode} and pow.workorder_code = #{workorderCode}
</select> </select>
<select id="getSapWorkOrder" resultType="java.lang.String"> <select id="getSapWorkOrder" resultType="com.op.mes.domain.MesReportWork">
select workorder_code_sap from pro_order_workorder select workorder_code_sap workorderCodeSap,
workorder_code workorderCode
from pro_order_workorder
where belong_work_order = #{workorderCode} and del_flag = '0' 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> </select>
<insert id="insertMesReportWork" parameterType="MesReportWork"> <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> <if test="endReport != null and endReport != ''">#{endReport},</if>
</trim> </trim>
</insert> </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 id="updateMesReportWork" parameterType="MesReportWork">
update mes_report_work update mes_report_work
@ -582,15 +698,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="uploadMsg != null">upload_msg = #{uploadMsg},</if> <if test="uploadMsg != null">upload_msg = #{uploadMsg},</if>
</trim> </trim>
where 1=1 where 1=1
<if test="id != null"> <if test="id != null">and id = #{id}</if>
and id = #{id} <if test="workorderCode != null">and workorder_code = #{workorderCode}</if>
</if> </update>
<if test="reportCode != null"> <update id="updateOrderWorkStatus">
and report_code = #{reportCode} update pro_order_workorder
</if> set status = #{status},
update_by = #{updateBy},
update_time = #{updateTime}
where belong_work_order = #{workorderCode}
</update> </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> </update>
<delete id="deleteMesReportWorkById" parameterType="String"> <delete id="deleteMesReportWorkById" parameterType="String">

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

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

@ -153,86 +153,86 @@ public class OpenServiceImpl implements OpenService {
return dto; return dto;
} }
@Override // @Override
public R reportWork(MesReportWorkDTO mesReportWork) { // public R reportWork(MesReportWorkDTO mesReportWork) {
DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key // DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key
// logger.info("上位机开始报工:报工单"+mesReportWork.getReportCode());
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工 // mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod"); // mesReportWork.setProdType("prod");
List<MesReportWorkDTO> reportWorks = openMapper.getReportWorkList(mesReportWork); // List<MesReportWorkDTO> reportWorks = openMapper.getReportWorkList(mesReportWork);
if(CollectionUtils.isEmpty(reportWorks)){ // if(CollectionUtils.isEmpty(reportWorks)){
return R.fail("未查询到报工单"); // return R.fail("未查询到报工单");
} // }
//
MesReportWorkDTO work = reportWorks.get(0); // MesReportWorkDTO work = reportWorks.get(0);
SapRFW sapRFW = new SapRFW(); // SapRFW sapRFW = new SapRFW();
sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 // sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号
sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 // sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量
SapRFW.lt_gs ltgs = sapRFW.getLt_gs();//生产订单报工工时修改 // SapRFW.lt_gs ltgs = sapRFW.new lt_gs();//生产订单报工工时修改
ltgs.setConf_activity1(work.getSac1());//人工 // ltgs.setConf_activity1(work.getSac1());//人工
ltgs.setConf_activity2(work.getSac2()); // ltgs.setConf_activity2(work.getSac2());
ltgs.setConf_activity3(work.getSac3());//机器 // ltgs.setConf_activity3(work.getSac3());//机器
ltgs.setConf_activity4(work.getSac4()); // ltgs.setConf_activity4(work.getSac4());
ltgs.setConf_activity5(work.getSac5());//折旧 // ltgs.setConf_activity5(work.getSac5());//折旧
ltgs.setConf_activity6(work.getSac6()); // ltgs.setConf_activity6(work.getSac6());
sapRFW.setLt_gs(ltgs); // sapRFW.setLt_gs(ltgs);
List<SapRFW.lt_hw> lt_hwList =new ArrayList<>(); // List<SapRFW.lt_hw> lt_hwList =new ArrayList<>();
logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng()); // //logger.info(work.getWorkorderCodeSap()+"母sap工单报工报工数量"+sapRFW.getGamng());
MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO(); // MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO();
consumeqo.setWorkorderCode(work.getWorkorderCode()); // consumeqo.setWorkorderCode(work.getWorkorderCode());
List<MesReportWorkConsumeDTO> consumes = openMapper.selectMesReportWorkConsumeList(consumeqo); // List<MesReportWorkConsumeDTO> consumes = openMapper.selectMesReportWorkConsumeList(consumeqo);
if(!CollectionUtils.isEmpty(consumes)){ // if(!CollectionUtils.isEmpty(consumes)){
for(MesReportWorkConsumeDTO consume:consumes){ // for(MesReportWorkConsumeDTO consume:consumes){
logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+ // logger.info(work.getWorkorderCodeSap()+"母sap工单报工【原料损耗】"+
consume.getMaterialCode()+"|"+consume.getQuantity()); // consume.getMaterialCode()+"|"+consume.getQuantity());
SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 // SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改
lthw.setEntry_qnt(consume.getQuantity()+"");//数量 // lthw.setEntry_qnt(consume.getQuantity()+"");//数量
lthw.setMaterial(consume.getMaterialCode());//物料编码 // lthw.setMaterial(consume.getMaterialCode());//物料编码
lt_hwList.add(lthw); // lt_hwList.add(lthw);
} // }
}else{ // }else{
logger.info(work.getWorkorderCodeSap()+"母sap工单报工工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据"); // logger.info(work.getWorkorderCodeSap()+"母sap工单报工工单"+work.getWorkorderCode()+"==mes_report_work_consume没有数据");
//return R.fail("mes_report_work_consume没有数据"); // //return R.fail("mes_report_work_consume没有数据");
} // }
sapRFW.setLt_hwList(lt_hwList); // sapRFW.setLt_hwList(lt_hwList);
logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求"+ JSONObject.toJSONString(sapRFW)); // logger.info(work.getWorkorderCodeSap()+"母sap工单报工请求参数"+ JSONObject.toJSONString(sapRFW));
R r = remoteSapService.sapRFWOrder(sapRFW); // R r = remoteSapService.sapRFWOrder(sapRFW);
logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg()); // logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果"+r.getCode()+","+r.getData()+","+r.getMsg());
//上传成功更改mes_report_work状态 // //上传成功更改mes_report_work状态
if (r.getCode() == 200) { // if (r.getCode() == 200) {
work.setUploadStatus("1"); // work.setUploadStatus("1");
} else { // } else {
work.setUploadStatus("2"); // work.setUploadStatus("2");
work.setUploadMsg(r.getMsg()); // work.setUploadMsg(r.getMsg());
} // }
work.setUploadTime(DateUtils.getNowDate()); // work.setUploadTime(DateUtils.getNowDate());
openMapper.updateSyncSapStatus(work); // openMapper.updateSyncSapStatus(work);
//工单完成数量>工单数量:关闭订单 // //工单完成数量>工单数量:关闭订单
MesReportWorkDTO proResult = openMapper.getProdResult(work); // MesReportWorkDTO proResult = openMapper.getProdResult(work);
//ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode()); // //ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode());
if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识 // if(proResult.getQuantityFeedback().compareTo(work.getQuantitySplit())>=0||"1".equals(work.getEndReport())//最终报工标识
){ // ){
logger.info("工单请求关闭调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap()); // logger.info("工单请求关闭调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap());
//工单完成,关闭母工单 // //工单完成,关闭母工单
List<String> sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 // List<String> sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单
//关闭母子订单//订单的订单编码 // //关闭母子订单//订单的订单编码
SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); // SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery();
sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); // sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0));
sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); // sapCloseOrderQuery.setOrder(sapWorkOrders.get(1));
R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); // R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery);
logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ // logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+
sapCloseOrderQuery.getOrder()+":"+ // sapCloseOrderQuery.getOrder()+":"+
closeR.getCode()+","+ // closeR.getCode()+","+
closeR.getMsg()+","+ // closeR.getMsg()+","+
closeR.getData()); // closeR.getData());
work.setStatus("w3"); // work.setStatus("w3");
work.setUpdateTime(DateUtils.getNowDate()); // work.setUpdateTime(DateUtils.getNowDate());
//pro_work_order status->w3报工--belong_work_order // //pro_work_order status->w3报工--belong_work_order
openMapper.updateWorkOrderStatus(work); // openMapper.updateWorkOrderStatus(work);
logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功"); // logger.info("工单"+work.getWorkorderCodeSap()+"关闭成功");
} // }
return R.ok(); // return R.ok();
} // }
@Override @Override
public List<WCSDTO> getLGInfo(WCSDTO wcsDTO) { 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.csp.sentinel.util.StringUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.utils.ServletUtils; import com.op.common.core.utils.ServletUtils;
import com.op.plan.domain.vo.CascaderDTO; import com.op.plan.domain.vo.CascaderDTO;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
@ -93,7 +94,6 @@ public class ProOrderServiceImpl implements IProOrderService {
* @return * @return
*/ */
@Override @Override
@Transactional
@DS("#header.poolName") @DS("#header.poolName")
public AjaxResult subSplitOrder(SplitOrderDTO splitOrderDTO) { public AjaxResult subSplitOrder(SplitOrderDTO splitOrderDTO) {
boolean checkout = true; boolean checkout = true;
@ -294,8 +294,12 @@ public class ProOrderServiceImpl implements IProOrderService {
R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据 R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
logger.info("母订单"+proOrder.getOrderCode()+ logger.info("母订单"+proOrder.getOrderCode()+
"订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg()); "订单数量变更结果:"+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.setBelongWorkOrder(belongWorkOrder);
workOrder.setProdType("LJ01");
// 将工单信息更新至数据库 // 将工单信息更新至数据库
proOrderWorkorderMapper.insertProOrderWorkorder(workOrder); proOrderWorkorderMapper.insertProOrderWorkorder(workOrder);
@ -437,15 +441,15 @@ public class ProOrderServiceImpl implements IProOrderService {
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如20230923 sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如20230923
} }
//添加调用sap日志 // //添加调用sap日志
SysSapLog sysSapLog = new SysSapLog(); // SysSapLog sysSapLog = new SysSapLog();
sysSapLog.setId(IdUtils.fastSimpleUUID()); // sysSapLog.setId(IdUtils.fastSimpleUUID());
sysSapLog.setMesssge(sapqo.toString()); // sysSapLog.setMesssge(sapqo.toString());
sysSapLog.setMethod("syncSAP"); // sysSapLog.setMethod("syncSAP");
sysSapLog.setReqcode("请求"); // sysSapLog.setReqcode("请求");
sysSapLog.setCreateTime(DateUtils.getNowDate()); // sysSapLog.setCreateTime(DateUtils.getNowDate());
proOrderMapper.addSapLog(sysSapLog); // proOrderMapper.addSapLog(sysSapLog);
logger.info("手动订单同步:【参数】"+ JSONObject.toJSONString(sapqo));
//取>=20230923的sap数据 //取>=20230923的sap数据
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据 R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据
@ -461,12 +465,14 @@ public class ProOrderServiceImpl implements IProOrderService {
String failOrder = ""; String failOrder = "";
ProOrder proOrder = null; ProOrder proOrder = null;
for (SapProOrder sapProOrder:newOrders) { for (SapProOrder sapProOrder:newOrders) {
//工单生产后整个订单就被锁定//订单存在就更新,不存在就插入 if("LJ88".equals(sapProOrder.getOrderType())){
proOrder = new ProOrder(); //工单生产后整个订单就被锁定//订单存在就更新,不存在就插入
BeanUtils.copyProperties(sapProOrder, proOrder); proOrder = new ProOrder();
proOrder.setSyncUser(syncUser); BeanUtils.copyProperties(sapProOrder, proOrder);
proOrder.setProdType("prod");//只有白坯有导入 proOrder.setSyncUser(syncUser);
failOrder += syncFunc(proOrder); proOrder.setProdType("prod");//只有白坯有导入
failOrder += syncFunc(proOrder);
}
} }
return failOrder; return failOrder;
} }

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

@ -457,9 +457,9 @@
</insert> </insert>
<insert id="insertMesPrepareDetails"> <insert id="insertMesPrepareDetails">
INSERT INTO mes_prepare_detail ( INSERT INTO mes_prepare_detail (
record_id,prepare_id,material_code,material_name,unit, record_id,prepare_id,material_code,material_name,unit,
quantity,create_by,create_time,factory_code,status, quantity,create_by,create_time,factory_code,status,
locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order locator,need_date,recoil,fund_quanlity,buy_flag,parent_work_order
)VALUES )VALUES
<foreach collection="list" item="d" index="index" separator=","> <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.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
/** /**
@ -46,6 +48,9 @@ public class QuaController extends BaseController {
@Autowired @Autowired
private IQcCheckTaskIncomeService qcCheckTaskIncomeService; private IQcCheckTaskIncomeService qcCheckTaskIncomeService;
@Autowired
private IQcCheckUnqualifiedService qcCheckUnqualifiedService;
@PostMapping("/saveQcProCheck") @PostMapping("/saveQcProCheck")
public R<Boolean> saveQcProCheck(@RequestBody QcProCheck qcProCheck) { public R<Boolean> saveQcProCheck(@RequestBody QcProCheck qcProCheck) {
DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode());
@ -244,4 +249,13 @@ public class QuaController extends BaseController {
List<QcCheckTypeProject> list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject); List<QcCheckTypeProject> list = qcMaterialGroupService.getCheckTypeProjectList(qcCheckTypeProject);
return getDataTable(list); 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 int deleteQcCheckUnqualifiedByIds(String[] ids);
public List<QcDefectType> getDefectList(QcDefectType qcDefectType); 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 from qc_defect_type
where defect_type = #{defectType} and del_flag='0' where defect_type = #{defectType} and del_flag='0'
</select> </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 id="insertQcCheckUnqualified" parameterType="QcCheckUnqualified">
insert into qc_check_unqualified insert into qc_check_unqualified

@ -377,6 +377,8 @@ public class SapController extends BaseController {
} }
@PostMapping("/sapMaterialPosting") @PostMapping("/sapMaterialPosting")
@Log(title = "订单物料领料过账、原材料补料、订单物料退料过账接口MB1A", businessType = BusinessType.SAP) @Log(title = "订单物料领料过账、原材料补料、订单物料退料过账接口MB1A", businessType = BusinessType.SAP)
public R sapMaterialPosting(@RequestBody SapMaterialPosting sapMaterialPosting){ public R sapMaterialPosting(@RequestBody SapMaterialPosting sapMaterialPosting){

@ -8,11 +8,125 @@ public class SapPurchaseOrderQuery {
* S_MATNR * S_MATNR
* S_PWERK * S_PWERK
*/ */
/**
* EBELN
* EBELP
* MATNR
* MAKTX
* MENGE
* MEINS
* ZMENGE
* ZMEINS
* LIFNR
* WERKS
* LGORT
* EINDT
* ELIKZ
* BEIZHU
*/
private String ebeln; private String ebeln;
private String ebelp; private String ebelp;
private String matnr; private String matnr;
private String pwerk; private String pwerk;
private String maktx;
private String menge;
private String meins;
private String zmenge;
private String zmeins;
private String lifnr;
private String werks;
private String lgort;
private String eindt;
private String elikz;
private String beizhu;
public String getMaktx() {
return maktx;
}
public void setMaktx(String maktx) {
this.maktx = maktx;
}
public String getMenge() {
return menge;
}
public void setMenge(String menge) {
this.menge = menge;
}
public String getMeins() {
return meins;
}
public void setMeins(String meins) {
this.meins = meins;
}
public String getZmenge() {
return zmenge;
}
public void setZmenge(String zmenge) {
this.zmenge = zmenge;
}
public String getZmeins() {
return zmeins;
}
public void setZmeins(String zmeins) {
this.zmeins = zmeins;
}
public String getLifnr() {
return lifnr;
}
public void setLifnr(String lifnr) {
this.lifnr = lifnr;
}
public String getWerks() {
return werks;
}
public void setWerks(String werks) {
this.werks = werks;
}
public String getLgort() {
return lgort;
}
public void setLgort(String lgort) {
this.lgort = lgort;
}
public String getEindt() {
return eindt;
}
public void setEindt(String eindt) {
this.eindt = eindt;
}
public String getElikz() {
return elikz;
}
public void setElikz(String elikz) {
this.elikz = elikz;
}
public String getBeizhu() {
return beizhu;
}
public void setBeizhu(String beizhu) {
this.beizhu = beizhu;
}
public String getEbeln() { public String getEbeln() {
return ebeln; return ebeln;

@ -1,5 +1,6 @@
package com.op.sap.service.impl; package com.op.sap.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.constant.Constants; import com.op.common.core.constant.Constants;
import com.op.common.core.domain.R; import com.op.common.core.domain.R;
@ -54,6 +55,7 @@ public class SapItemSyncImpl implements SapItemSyncService {
// 获取调用 RFC 函数对象 // 获取调用 RFC 函数对象
//获取连接 //获取连接
// JCoDestination dest = SAPConnUtils.connect(); // JCoDestination dest = SAPConnUtils.connect();
log.info("物料基础数据同步输入参数---------"+JSONObject.toJSONString(sapItemQuery));
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZMMR_MES_MAT_GET"); JCoFunction func = repository.getFunction("ZMMR_MES_MAT_GET");
@ -104,7 +106,7 @@ public class SapItemSyncImpl implements SapItemSyncService {
// 获取 内表 - ZMES_PRO // 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("LT_MARA"); JCoTable maraTable = func.getTableParameterList().getTable("LT_MARA");
JCoRecordMetaData metaData = maraTable.getRecordMetaData(); JCoRecordMetaData metaData = maraTable.getRecordMetaData();
System.out.println("###" + metaData.toString()); // System.out.println("###" + metaData.toString());
// 加载数据源 // 加载数据源
DynamicDataSourceContextHolder.push("ds_1000"); DynamicDataSourceContextHolder.push("ds_1000");
List<SapBaseProduct> sapBaseProductList=new ArrayList<>(); List<SapBaseProduct> sapBaseProductList=new ArrayList<>();
@ -143,35 +145,64 @@ public class SapItemSyncImpl implements SapItemSyncService {
String MVGR5_NM = maraTable.getString("MVGR5_NM"); String MVGR5_NM = maraTable.getString("MVGR5_NM");
String LAEDA = maraTable.getString("LAEDA"); String LAEDA = maraTable.getString("LAEDA");
String ERSDA = maraTable.getString("LAEDA"); String ERSDA = maraTable.getString("LAEDA");
System.out.println( log.info("物料基础数据同步数据输出----"+
"物料号:" + MATNR+ "物料号:" + MATNR+
"物料描述(短文本):" + MAKTX+ "物料描述(短文本):" + MAKTX+
"国际文件号(EAN/UPC)" + EAN11+ "国际文件号(EAN/UPC)" + EAN11+
"物料类型:" + MTART+ "物料类型:" + MTART+
"物料类型描述:" + MTBEZ+ "物料类型描述:" + MTBEZ+
"物料组:" + MATKL+ "物料组:" + MATKL+
"物料组描述:" + WGBEZ+ "物料组描述:" + WGBEZ+
"毛重:" + BRGEW+ "毛重:" + BRGEW+
"净重:" + NTGEW+ "净重:" + NTGEW+
"体积:" + VOLUM+ "体积:" + VOLUM+
"体积单位:" + VOLEH+ "体积单位:" + VOLEH+
"基本计量单位:" + MEINS+ "基本计量单位:" + MEINS+
"帐面库存单位的可选计量单位 " + MEINH+ "帐面库存单位的可选计量单位 " + MEINH+
"基本计量单位转换分子:" + UMREZ+ "基本计量单位转换分子:" + UMREZ+
"转换为基本计量单位的分母:" + UMREN+ "转换为基本计量单位的分母:" + UMREN+
"在客户级标记要删除的物料:" + LVORM+ "在客户级标记要删除的物料:" + LVORM+
"数量:" + MENGE+ "数量:" + MENGE+
"总货架寿命 " + MHDHB+ "总货架寿命 " + MHDHB+
"产品组:" + SPART+ "产品组:" + SPART+
"产品组描述:" + SPART_NM+ "产品组描述:" + SPART_NM+
"物料组1" + MVGR1+ "物料组1" + MVGR1+
"物料组1描述" + MVGR1_NM+ "物料组1描述" + MVGR1_NM+
"物料组2" + MVGR2+ "物料组2" + MVGR2+
"物料组2描述" + MVGR2_NM+ "物料组2描述" + MVGR2_NM+
" 物料组3" + MVGR3+ " 物料组3" + MVGR3+
" 物料组描述 " + MVGR3_NM+ " 物料组描述 " + MVGR3_NM+
"创建日期:"+ERSDA+ "创建日期:"+ERSDA+
"上次更改日期:"+LAEDA); "上次更改日期:"+LAEDA);
// System.out.println(
// "物料号:" + MATNR+
// "物料描述(短文本):" + MAKTX+
// "国际文件号(EAN/UPC)" + EAN11+
// "物料类型:" + MTART+
// "物料类型描述:" + MTBEZ+
// "物料组:" + MATKL+
// "物料组描述:" + WGBEZ+
// "毛重:" + BRGEW+
// "净重:" + NTGEW+
// "体积:" + VOLUM+
// "体积单位:" + VOLEH+
// "基本计量单位:" + MEINS+
// "帐面库存单位的可选计量单位 " + MEINH+
// "基本计量单位转换分子:" + UMREZ+
// "转换为基本计量单位的分母:" + UMREN+
// "在客户级标记要删除的物料:" + LVORM+
// "数量:" + MENGE+
// "总货架寿命 " + MHDHB+
// "产品组:" + SPART+
// "产品组描述:" + SPART_NM+
// "物料组1" + MVGR1+
// "物料组1描述" + MVGR1_NM+
// "物料组2" + MVGR2+
// "物料组2描述" + MVGR2_NM+
// " 物料组3" + MVGR3+
// " 物料组描述 " + MVGR3_NM+
// "创建日期:"+ERSDA+
// "上次更改日期:"+LAEDA);
baseProduct.setProductCode(MATNR); baseProduct.setProductCode(MATNR);
baseProduct.setProductDescZh(MAKTX); baseProduct.setProductDescZh(MAKTX);
baseProduct.setProductGroup(MATKL); baseProduct.setProductGroup(MATKL);
@ -314,7 +345,7 @@ public class SapItemSyncImpl implements SapItemSyncService {
// int failureNum = 0; // int failureNum = 0;
// StringBuilder successMsg = new StringBuilder(); // StringBuilder successMsg = new StringBuilder();
// StringBuilder failureMsg = new StringBuilder(); // StringBuilder failureMsg = new StringBuilder();
// log.info("反冲物料开始过账----------------------------------------"); log.info("反冲物料开始过账----------------------------------------");
// for (int i = 0; i < sapBackflushMPQueryList.size(); i++) { // for (int i = 0; i < sapBackflushMPQueryList.size(); i++) {
// L_ITEM.setRow(i); // L_ITEM.setRow(i);
@ -340,6 +371,26 @@ public class SapItemSyncImpl implements SapItemSyncService {
L_ITEM.setValue("MOVE_BATCH",sfp.getMove_batch()); L_ITEM.setValue("MOVE_BATCH",sfp.getMove_batch());
} }
func.execute(dest);
JCoTable maraTable = func.getTableParameterList().getTable("LT_RETURN");
JCoRecordMetaData metaData = maraTable.getRecordMetaData();
System.out.println("###" + metaData.toString());
for (int i = 0; i < maraTable.getNumRows(); i++) {
maraTable.setRow(i);
String TYPE = maraTable.getString("TYPE");
System.out.println(TYPE);
}
String L_MSG= func.getExportParameterList().getString("L_MSG");
String RETCODE= func.getExportParameterList().getString("RETCODE");
String MATERIALDOCUMENT= func.getExportParameterList().getString("MATERIALDOCUMENT");
String MATDOCUMENTYEAR= func.getExportParameterList().getString("MATDOCUMENTYEAR");
System.out.println(L_MSG);
System.out.println(RETCODE);
System.out.println(MATERIALDOCUMENT);
System.out.println(MATDOCUMENTYEAR);
return R.ok(); return R.ok();
}catch (Exception e){ }catch (Exception e){

@ -8,6 +8,8 @@ import com.op.sap.service.SapMaterialPreparationService;
import com.op.sap.util.SAPConnUtils; import com.op.sap.util.SAPConnUtils;
import com.op.system.api.domain.sap.SapMaterialPreparation; import com.op.system.api.domain.sap.SapMaterialPreparation;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -18,7 +20,7 @@ import java.util.List;
@Component @Component
@Service @Service
public class SapMaterialPreparationServiceImpl implements SapMaterialPreparationService { public class SapMaterialPreparationServiceImpl implements SapMaterialPreparationService {
private static final Logger log = LoggerFactory.getLogger(SapMaterialPreparationServiceImpl.class);
@Autowired @Autowired
SapMaterialPreparationMapper sapMaterialPreparationMapper; SapMaterialPreparationMapper sapMaterialPreparationMapper;
@ -33,6 +35,7 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation
// 获取调用 RFC 函数对象 // 获取调用 RFC 函数对象
//获取连接 //获取连接
// JCoDestination dest = SAPConnUtils.connect(); // JCoDestination dest = SAPConnUtils.connect();
log.info("备料单入参-----"+shopOrder);
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_MATERIAL_PREPARATION"); JCoFunction func = repository.getFunction("ZPPR_MES_MATERIAL_PREPARATION");
if (func == null) { if (func == null) {
@ -48,7 +51,7 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation
// 获取 内表 - ZMES_PRO // 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("LT_MAPRE"); JCoTable maraTable = func.getTableParameterList().getTable("LT_MAPRE");
JCoRecordMetaData metaData = maraTable.getRecordMetaData(); JCoRecordMetaData metaData = maraTable.getRecordMetaData();
System.out.println("###" + metaData.toString()); //System.out.println("###" + metaData.toString());
List<SapMaterialPreparation> sapMaterialPreparationList =new ArrayList<>(); List<SapMaterialPreparation> sapMaterialPreparationList =new ArrayList<>();
// 循环输出 Table 数据 // 循环输出 Table 数据
@ -66,7 +69,7 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation
String MEINS = maraTable.getString("MEINS"); String MEINS = maraTable.getString("MEINS");
String RGEKZ = maraTable.getString("RGEKZ"); String RGEKZ = maraTable.getString("RGEKZ");
String DBSKZ = maraTable.getString("DBSKZ"); String DBSKZ = maraTable.getString("DBSKZ");
System.out.println("订单号:" + AUFNR log.info( "备料单输出------"+ "订单号:" + AUFNR
+ " - 预留/相关需求的项目编号:" + RSPOS + + " - 预留/相关需求的项目编号:" + RSPOS +
" - 物料号:" + MATNR + " - 物料号:" + MATNR +
" - 物料描述(短文本):" + MAKTX + " - 物料描述(短文本):" + MAKTX +
@ -78,6 +81,18 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation
" - 基本计量单位:" + MEINS + " - 基本计量单位:" + MEINS +
" - 标识:反冲:" + RGEKZ + " - 标识:反冲:" + RGEKZ +
" - 直接采购标识:" + DBSKZ ); " - 直接采购标识:" + DBSKZ );
// System.out.println("订单号:" + AUFNR
// + " - 预留/相关需求的项目编号:" + RSPOS +
// " - 物料号:" + MATNR +
// " - 物料描述(短文本):" + MAKTX +
// " - 工厂:" + WERKS +
// " - 库存地点:" + LGORT +
// " - 组件的需求日期 " + BDTER +
// " - 需求量:" + BDMNG +
// " - 欠料数量:" + ZQLSL +
// " - 基本计量单位:" + MEINS +
// " - 标识:反冲:" + RGEKZ +
// " - 直接采购标识:" + DBSKZ );
SapMaterialPreparation sapMaterialPreparation = new SapMaterialPreparation(); SapMaterialPreparation sapMaterialPreparation = new SapMaterialPreparation();
sapMaterialPreparation.setAUFNR(AUFNR); sapMaterialPreparation.setAUFNR(AUFNR);
sapMaterialPreparation.setBDMNG(BDMNG); sapMaterialPreparation.setBDMNG(BDMNG);
@ -93,8 +108,10 @@ public class SapMaterialPreparationServiceImpl implements SapMaterialPreparation
sapMaterialPreparation.setZQLSL(ZQLSL); sapMaterialPreparation.setZQLSL(ZQLSL);
sapMaterialPreparationList.add(sapMaterialPreparation); sapMaterialPreparationList.add(sapMaterialPreparation);
} }
return R.ok(sapMaterialPreparationList); String MSG= func.getExportParameterList().getString("MSG");
return R.ok(sapMaterialPreparationList,MSG);
} catch (Exception e) { } catch (Exception e) {
log.error("同步领料单报错-----"+e.getMessage());
return R.fail(e.getMessage()); return R.fail(e.getMessage());
} }
} }

@ -18,6 +18,8 @@ import com.op.system.api.domain.sap.SapShopOrderQuery;
import com.op.system.api.model.SapProOrder; import com.op.system.api.model.SapProOrder;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -31,7 +33,7 @@ import java.util.Map;
@Component @Component
@Service @Service
public class SapOrderServiceImpl implements SapOrderService { public class SapOrderServiceImpl implements SapOrderService {
private static final Logger log = LoggerFactory.getLogger(SapOrderServiceImpl.class);
private static final String END_DATE="99991231"; private static final String END_DATE="99991231";
@Autowired @Autowired
private JCoDestination dest; private JCoDestination dest;
@ -43,6 +45,7 @@ public class SapOrderServiceImpl implements SapOrderService {
// 获取调用 RFC 函数对象 // 获取调用 RFC 函数对象
//获取连接 //获取连接
//JCoDestination dest = SAPConnUtils.connect(); //JCoDestination dest = SAPConnUtils.connect();
log.info("订单同步入参-----"+sapShopOrderQuery.toString());
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_PRO_TO"); JCoFunction func = repository.getFunction("ZPPR_MES_PRO_TO");
if (func == null) { if (func == null) {
@ -51,8 +54,8 @@ public class SapOrderServiceImpl implements SapOrderService {
JCoParameterList jCoParameterList= func.getTableParameterList(); JCoParameterList jCoParameterList= func.getTableParameterList();
JCoParameterList js= func.getExportParameterList(); JCoParameterList js= func.getExportParameterList();
System.out.println(js); // System.out.println(js);
System.out.println(jCoParameterList); // System.out.println(jCoParameterList);
// 配置传入参数 // 配置传入参数
// S_WERKS(工厂) S_AUFNR订单号 S_MATNR物料号 S_ERDAT(创建日期) 例如20230923 // S_WERKS(工厂) S_AUFNR订单号 S_MATNR物料号 S_ERDAT(创建日期) 例如20230923
@ -95,7 +98,7 @@ public class SapOrderServiceImpl implements SapOrderService {
// 获取 内表 - ZMES_PRO // 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO"); JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO");
JCoRecordMetaData metaData = maraTable.getRecordMetaData(); JCoRecordMetaData metaData = maraTable.getRecordMetaData();
System.out.println("###" + metaData.toString()); // System.out.println("###" + metaData.toString());
List<SapProOrder> proOrderList = new ArrayList<>(); List<SapProOrder> proOrderList = new ArrayList<>();
// 循环输出 Table 数据 // 循环输出 Table 数据
@ -115,9 +118,12 @@ public class SapOrderServiceImpl implements SapOrderService {
String ERNAM = maraTable.getString("ERNAM"); String ERNAM = maraTable.getString("ERNAM");
String ERDAT = maraTable.getString("ERDAT"); String ERDAT = maraTable.getString("ERDAT");
String STTXT = maraTable.getString("STTXT"); String STTXT = maraTable.getString("STTXT");
System.out.println("订单号:" + AUFNR + " - 订单类型:" + AUART + " - 上级订单编号:" + MAUFNR + " - 物料号:" + PLNBEZ + " - 物料描述(短文本):" + MAKTX log.info("订单输出------"+"订单号:" + AUFNR + " - 订单类型:" + AUART + " - 上级订单编号:" + MAUFNR + " - 物料号:" + PLNBEZ + " - 物料描述(短文本):" + MAKTX
+ " - 订单的计划工厂:" + PWERK + " - 订单数量总计:" + GAMNG + " - 基本计量单位:" + GMEIN + " - 任务清单组码:" + PLNNR + " - 基本开始日期:" + GSTRP + " - 订单的计划工厂:" + PWERK + " - 订单数量总计:" + GAMNG + " - 基本计量单位:" + GMEIN + " - 任务清单组码:" + PLNNR + " - 基本开始日期:" + GSTRP
+ " - 基本完成日期:" + GLTRP + " - 输入者:" + ERNAM + " - 创建日期:" + ERDAT + " - 系统状态:" + STTXT); + " - 基本完成日期:" + GLTRP + " - 输入者:" + ERNAM + " - 创建日期:" + ERDAT + " - 系统状态:" + STTXT);
// System.out.println("订单号:" + AUFNR + " - 订单类型:" + AUART + " - 上级订单编号:" + MAUFNR + " - 物料号:" + PLNBEZ + " - 物料描述(短文本):" + MAKTX
// + " - 订单的计划工厂:" + PWERK + " - 订单数量总计:" + GAMNG + " - 基本计量单位:" + GMEIN + " - 任务清单组码:" + PLNNR + " - 基本开始日期:" + GSTRP
// + " - 基本完成日期:" + GLTRP + " - 输入者:" + ERNAM + " - 创建日期:" + ERDAT + " - 系统状态:" + STTXT);
SapProOrder proOrder = new SapProOrder(); SapProOrder proOrder = new SapProOrder();
proOrder.setId(IdUtils.fastSimpleUUID()); proOrder.setId(IdUtils.fastSimpleUUID());
proOrder.setPlanFactoryCode(PWERK); proOrder.setPlanFactoryCode(PWERK);
@ -145,7 +151,7 @@ public class SapOrderServiceImpl implements SapOrderService {
return R.ok(proOrderList); return R.ok(proOrderList);
} catch (Exception e) { } catch (Exception e) {
System.out.println(e.getMessage());
return R.fail(e.getMessage()); return R.fail(e.getMessage());
} }
} }
@ -156,6 +162,7 @@ public class SapOrderServiceImpl implements SapOrderService {
try { try {
//获取连接 //获取连接
// JCoDestination dest = SAPConnUtils.connect(); // JCoDestination dest = SAPConnUtils.connect();
log.info("订单创建入参-----"+JSONObject.toJSONString(sapCreateOrderList));
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CREATE"); JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CREATE");
if (func == null) { if (func == null) {
@ -176,12 +183,12 @@ public class SapOrderServiceImpl implements SapOrderService {
jCoParameterList.setValue("P_DATEE",sapCreateOrder.getDatee()); jCoParameterList.setValue("P_DATEE",sapCreateOrder.getDatee());
func.execute(dest);//执行调用函数 func.execute(dest);//执行调用函数
JCoParameterList J= func.getExportParameterList(); JCoParameterList J= func.getExportParameterList();
System.out.println(J); // System.out.println(J);
L_MSG= func.getExportParameterList().getString("L_MSG"); L_MSG= func.getExportParameterList().getString("L_MSG");
String LV_ORDER_NUMBER= func.getExportParameterList().getString("LV_ORDER_NUMBER"); String LV_ORDER_NUMBER= func.getExportParameterList().getString("LV_ORDER_NUMBER");
JCoTable LT_ZGD=func.getTableParameterList().getTable("LT_ZGD"); JCoTable LT_ZGD=func.getTableParameterList().getTable("LT_ZGD");
System.out.println(LT_ZGD); // System.out.println(LT_ZGD);
//DynamicDataSourceContextHolder.push("ds_1000");//controller已经完成切换 //DynamicDataSourceContextHolder.push("ds_1000");//controller已经完成切换
for (int i = 0; i <LT_ZGD.getNumRows(); i++) { for (int i = 0; i <LT_ZGD.getNumRows(); i++) {
LT_ZGD.setRow(i); LT_ZGD.setRow(i);
@ -193,11 +200,14 @@ public class SapOrderServiceImpl implements SapOrderService {
LV_ORDER_NUM_List.add(map); LV_ORDER_NUM_List.add(map);
} }
} }
log.info("订单创建结果----"+L_MSG+"|"+JSONObject.toJSONString(LV_ORDER_NUM_List));
return R.ok(LV_ORDER_NUM_List,L_MSG); return R.ok(LV_ORDER_NUM_List,L_MSG);
}else { }else {
log.error("接收的数据为空");
return R.fail("接收的数据为空"); return R.fail("接收的数据为空");
} }
}catch (Exception e){ }catch (Exception e){
log.error(L_MSG+e.getMessage());
return R.fail(L_MSG); return R.fail(L_MSG);
} }
@ -210,6 +220,7 @@ public class SapOrderServiceImpl implements SapOrderService {
try { try {
//获取连接 //获取连接
// JCoDestination dest = SAPConnUtils.connect(); // JCoDestination dest = SAPConnUtils.connect();
log.info("订单关闭入参------"+sapCloseOrderQuery.toString());
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CLOSE"); JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CLOSE");
if (func == null) { if (func == null) {
@ -237,8 +248,10 @@ public class SapOrderServiceImpl implements SapOrderService {
func.execute(dest);//执行调用函数 func.execute(dest);//执行调用函数
String L_MSG2= func.getExportParameterList().getString("L_MSG"); String L_MSG2= func.getExportParameterList().getString("L_MSG");
Msg.append(sapCloseOrderQuery.getOrder()+L_MSG2); Msg.append(sapCloseOrderQuery.getOrder()+L_MSG2);
log.info("订单关闭结果"+Msg.toString());
return R.ok(null,Msg.toString()); return R.ok(null,Msg.toString());
}catch (Exception e){ }catch (Exception e){
log.error("订单关闭失败"+e.getMessage());
return R.fail(e.getMessage()); return R.fail(e.getMessage());
} }
} }
@ -338,12 +351,12 @@ public class SapOrderServiceImpl implements SapOrderService {
S_EBELN.setValue(Constants.OPTION, "EQ"); S_EBELN.setValue(Constants.OPTION, "EQ");
S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln()); S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln());
} }
if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbeln())){ if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbelp())){
JCoTable S_EBELN = func.getTableParameterList().getTable("S_EBELP"); JCoTable S_EBELP = func.getTableParameterList().getTable("S_EBELP");
S_EBELN.appendRow(); S_EBELP.appendRow();
S_EBELN.setValue(Constants.SIGN, "I"); S_EBELP.setValue(Constants.SIGN, "I");
S_EBELN.setValue(Constants.OPTION, "EQ"); S_EBELP.setValue(Constants.OPTION, "EQ");
S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln()); S_EBELP.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbelp());
} }
if (!StringUtils.isNull(sapPurchaseOrderQuery.getMatnr())){ if (!StringUtils.isNull(sapPurchaseOrderQuery.getMatnr())){
JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR"); JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR");
@ -365,7 +378,57 @@ public class SapOrderServiceImpl implements SapOrderService {
JCoTable maraTable = func.getTableParameterList().getTable("LT_PROCURE"); JCoTable maraTable = func.getTableParameterList().getTable("LT_PROCURE");
JCoRecordMetaData metaData = maraTable.getRecordMetaData(); JCoRecordMetaData metaData = maraTable.getRecordMetaData();
System.out.println("###" + metaData.toString()); System.out.println("###" + metaData.toString());
return R.ok(); List<SapPurchaseOrderQuery> sapPurchaseOrderQueryList=new ArrayList<>();
for (int i = 0; i < maraTable.getNumRows(); i++) {
maraTable.setRow(i);
SapPurchaseOrderQuery sapPCorder=new SapPurchaseOrderQuery();
String EBELN = maraTable.getString("EBELN");
String EBELP = maraTable.getString("EBELP");
String MATNR = maraTable.getString("MATNR");
String MAKTX = maraTable.getString("MAKTX");
String MENGE = maraTable.getString("MENGE");
String MEINS = maraTable.getString("MEINS");
String ZMENGE = maraTable.getString("ZMENGE");
String ZMEINS = maraTable.getString("ZMEINS");
String LIFNR = maraTable.getString("LIFNR");
String WERKS = maraTable.getString("WERKS");
String LGORT = maraTable.getString("LGORT");
String EINDT = maraTable.getString("EINDT");
String ELIKZ = maraTable.getString("ELIKZ");
String BEIZHU = maraTable.getString("BEIZHU");
System.out.println(
"采购凭证号"+EBELN+
"采购凭证的项目编号"+EBELP+
"物料号"+MATNR+
"物料描述(短文本)"+MAKTX+
"采购订单数量"+MENGE+
"采购订单的计量单位"+MEINS+
"交货数量"+ZMENGE+
"基本计量单位"+ZMEINS+
"供应商帐户号"+LIFNR+
"工厂"+WERKS+
"库存地点"+LGORT+
"项目交货日期"+EINDT+
"交货已完成标识"+ELIKZ+
"注释"+BEIZHU);
sapPCorder.setEbeln(EBELN);
sapPCorder.setEbelp(EBELP);
sapPCorder.setMatnr(MATNR);
sapPCorder.setMaktx(MAKTX);
sapPCorder.setMenge(MENGE);
sapPCorder.setMeins(MEINS);
sapPCorder.setZmenge(ZMENGE);
sapPCorder.setZmeins(ZMEINS);
sapPCorder.setLifnr(LIFNR);
sapPCorder.setWerks(WERKS);
sapPCorder.setLgort(LGORT);
sapPCorder.setEindt(EINDT);
sapPCorder.setElikz(ELIKZ);
sapPCorder.setBeizhu(BEIZHU);
sapPurchaseOrderQueryList.add(sapPCorder);
}
return R.ok(sapPurchaseOrderQueryList);
}catch (Exception e){ }catch (Exception e){
return R.fail(e.getMessage()); return R.fail(e.getMessage());
} }
@ -375,6 +438,7 @@ public class SapOrderServiceImpl implements SapOrderService {
@Override @Override
public R shopUpdateSync(SapShopOrderQuery sapProOrder) { public R shopUpdateSync(SapShopOrderQuery sapProOrder) {
try { try {
log.info("订单修改入参-------"+sapProOrder.toString());
JCoRepository repository = dest.getRepository(); JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CHANGE"); JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CHANGE");
// 配置传入参数 // 配置传入参数
@ -399,11 +463,14 @@ public class SapOrderServiceImpl implements SapOrderService {
String RETCODE= func.getExportParameterList().getString("RETCODE"); String RETCODE= func.getExportParameterList().getString("RETCODE");
String MESSAGE= func.getExportParameterList().getString("MESSAGE"); String MESSAGE= func.getExportParameterList().getString("MESSAGE");
if ((Constants.FAIL).equals(Integer.parseInt(RETCODE))){ if ((Constants.FAIL).equals(Integer.parseInt(RETCODE))){
log.error("订单修改结果-----"+MESSAGE);
return R.fail(null,"订单号:"+sapProOrder.getAufnr()+MESSAGE); return R.fail(null,"订单号:"+sapProOrder.getAufnr()+MESSAGE);
}else { }else {
log.info("订单修改结果-----"+MESSAGE);
return R.ok(null,"订单号:"+sapProOrder.getAufnr()+MESSAGE); return R.ok(null,"订单号:"+sapProOrder.getAufnr()+MESSAGE);
} }
}catch (Exception e){ }catch (Exception e){
log.error(e.getMessage());
return R.fail(e.getMessage()); return R.fail(e.getMessage());
} }
} }

Loading…
Cancel
Save