From c20fcc180c5f5acfff82a4fbe9c828d78e16bb5f Mon Sep 17 00:00:00 2001 From: chj <16637853242@163.com> Date: Tue, 8 Aug 2023 18:00:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=88=A0=E9=99=A4=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProOrderWorkorderController.java | 51 ++++++++++++------- .../plan/mapper/ProOrderWorkorderMapper.java | 2 + .../service/IProOrderWorkorderService.java | 7 +++ .../service/impl/ProOrderServiceImpl.java | 2 - .../impl/ProOrderWorkorderServiceImpl.java | 12 +++++ .../mapper/plan/ProOrderWorkorderMapper.xml | 10 ++++ 6 files changed, 65 insertions(+), 19 deletions(-) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java index 428f93f1..9b1cacfe 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java @@ -1,8 +1,10 @@ package com.op.plan.controller; +import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.op.common.core.exception.ServiceException; import com.op.plan.domain.ProOrder; import com.op.plan.domain.dto.SplitOrderDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -143,24 +145,39 @@ public class ProOrderWorkorderController extends BaseController { @DeleteMapping("/{workorderIds}") public AjaxResult remove(@PathVariable String[] workorderIds) { //什么时候可以删除工单?TODO;没进入生产之前都可以? - ProOrderWorkorder proOrderWorkorder = new ProOrderWorkorder(); - String status = proOrderWorkorder.getStatus(); - ProOrder proOrder = new ProOrder(); - String status1 = proOrder.getStatus(); - if (proOrderWorkorder != null) { - int parsedStatus1 = Integer.parseInt(status1); - int parsedStatus = Integer.parseInt(status); - - if (parsedStatus1 == 1 && parsedStatus == 0) { - proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(workorderIds); - } else { - System.out.println("订单未拆分或工单已经下单"); - } +// 根据工单的ids查工单的信息 + List<ProOrderWorkorder> proOrderWorkorders = proOrderWorkorderService.selectProOrderWorkorderByWorkIds(workorderIds); + if (ObjectUtils.isEmpty(proOrderWorkorders)){ + throw new ServiceException("所查询的工单为空!!"); } -// if (!ObjectUtils.isEmpty(proOrderWorkorder) && Integer.parseInt(status1)==1 && Integer.parseInt(status)==0){ -// proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(workorderIds); -// }else { -// System.out.println("订单未拆分或工单已经下单"); + ArrayList<String> strings = new ArrayList<>(); + for (ProOrderWorkorder proOrderWorkorder : proOrderWorkorders) { + String status = proOrderWorkorder.getStatus(); + strings.add(status); + } + String[] orderWorkerIds= strings.toArray(new String[0]); + for (String orderWorkerId : orderWorkerIds) { + if (orderWorkerId.equals("w0")){ + return toAjax(proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(workorderIds)); + } else { + throw new ServiceException("工单已经下单,不能删除!"); + } + } + + +// ProOrderWorkorder proOrderWorkorder = new ProOrderWorkorder(); +// String status = proOrderWorkorder.getStatus(); +// ProOrder proOrder = new ProOrder(); +// String status1 = proOrder.getStatus(); +// if (proOrderWorkorder != null) { +// int parsedStatus1 = Integer.parseInt(status1); +// int parsedStatus = Integer.parseInt(status); +// +// if (parsedStatus1 == 1 && parsedStatus == 0) { +// proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(workorderIds); +// } else { +// throw new ServiceException("订单未拆分或工单已经下单"); +// } // } return toAjax(proOrderWorkorderService.deleteProOrderWorkorderByWorkorderIds(workorderIds)); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 541af650..3f5801ad 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -121,5 +121,7 @@ public interface ProOrderWorkorderMapper { int deleteProOrderWorkorderByOrderId(String id); void createPrepare(MesPrepare mesPrepare); + + List<ProOrderWorkorder> selectProOrderWorkerderByWorkerIds(String[] ids); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java index 82e10dac..8edf5ece 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java @@ -102,4 +102,11 @@ public interface IProOrderWorkorderService { */ AjaxResult checkWorkOrder(String id); + /** + * 根据workerIds查询ProOrderWorkorder + * @param workerIds + * @return + */ + public List<ProOrderWorkorder> selectProOrderWorkorderByWorkIds(String[] workerIds); + } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index b350947a..f4b3b04e 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -337,7 +337,6 @@ public class ProOrderServiceImpl implements IProOrderService { if (checkPlan) { errMsg.append("第" + (i + 1) + "行:" + "订单号为:" + orderList.get(i).getOrderCode() + ",该订单下工单已有湿料计划,不允许更新;" + "<br/>"); } - } // 如果存在不可编辑信息 @@ -716,7 +715,6 @@ public class ProOrderServiceImpl implements IProOrderService { return error(500, "计划完成日期不能为空!信息导入失败!"); } } - return success(); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 1531ad71..857d0c5a 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -428,6 +428,18 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { return success(); } + + /** + * 根据workerIds查询ProOrderWorkorder + * @param workerIds + * @return + */ + @Override + @DS("#header.poolName") + public List<ProOrderWorkorder> selectProOrderWorkorderByWorkIds(String[] workerIds) { + return proOrderWorkorderMapper.selectProOrderWorkerderByWorkerIds(workerIds); + } + /** * 格式化工单信息(递归处理) * diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 7a2048b7..1c7c163d 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -129,6 +129,16 @@ <include refid="selectProOrderWorkorderVo"/> where order_code = #{orderCode} </select> + <select id="selectProOrderWorkerderByWorkerIds" resultMap="ProOrderWorkorderResult"> + select workorder_id, workorder_code, workorder_name, order_id, order_code, product_id, product_code, product_name, + product_spc, unit, quantity_produced, quantity_split, route_code, prod_line_code, product_date, + shift_id, parent_order, ancestors, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, + update_by, update_time, prod_type, factory_code , is_end + from pro_order_workorder where workorder_id in + <foreach item="ids" collection="array" open="(" separator="," close=")"> + #{ids} + </foreach> + </select> <insert id="insertProOrderWorkorder" parameterType="ProOrderWorkorder"> insert into pro_order_workorder From 67ef0ac2989f6c9b86689f400ff94ab8bab21f42 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin <khd@123> Date: Wed, 9 Aug 2023 10:04:54 +0800 Subject: [PATCH 2/2] =?UTF-8?q?wcs=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E8=BD=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api}/domain/dto/BaseBomComponentDTO.java | 56 ++++- .../op/system/api}/domain/dto/BaseBomDTO.java | 13 +- .../com/op/system/api/domain/dto/WCSDTO.java | 37 +++ .../api/domain/mes/MesStationArriveDTO.java | 211 +++++++++++++++++ op-common/op-common-log/op-common-log.iml | 3 +- .../MesStationArriveController.java | 97 ++++++++ .../controller/WCSInterfaceController.java | 52 ++++- .../com/op/mes/domain/MesStationArrive.java | 221 ++++++++++++++++++ .../java/com/op/mes/mapper/MesMapper.java | 2 + .../op/mes/mapper/MesStationArriveMapper.java | 63 +++++ .../mes/service/IMesStationArriveService.java | 60 +++++ .../op/mes/service/IWCSInterfaceService.java | 4 + .../service/impl/IWCInterfaceServiceImpl.java | 204 ++++++++++++---- .../impl/MesStationArriveServiceImpl.java | 89 +++++++ .../mapper/MesPrepareDetailMapper.xml | 17 +- .../main/resources/mapper/mes/MesMapper.xml | 3 + .../mapper/mes/MesStationArriveMapper.xml | 145 ++++++++++++ .../java/com/op/plan/domain/ProOrder.java | 10 + .../com/op/plan/domain/ProOrderWorkorder.java | 10 + .../plan/mapper/ProOrderWorkorderMapper.java | 8 + .../impl/ProOrderWorkorderServiceImpl.java | 96 ++++++-- .../mapper/plan/ProOrderWorkorderMapper.xml | 52 +++++ 22 files changed, 1372 insertions(+), 81 deletions(-) rename {op-modules/op-plan/src/main/java/com/op/plan => op-api/op-api-system/src/main/java/com/op/system/api}/domain/dto/BaseBomComponentDTO.java (83%) rename {op-modules/op-plan/src/main/java/com/op/plan => op-api/op-api-system/src/main/java/com/op/system/api}/domain/dto/BaseBomDTO.java (95%) create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesStationArriveDTO.java create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/controller/MesStationArriveController.java create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/domain/MesStationArrive.java create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/mapper/MesStationArriveMapper.java create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/service/IMesStationArriveService.java create mode 100644 op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesStationArriveServiceImpl.java create mode 100644 op-modules/op-mes/src/main/resources/mapper/mes/MesStationArriveMapper.xml diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomComponentDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomComponentDTO.java similarity index 83% rename from op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomComponentDTO.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomComponentDTO.java index 33bc0da3..f358ce45 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomComponentDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomComponentDTO.java @@ -1,4 +1,4 @@ -package com.op.plan.domain.dto; +package com.op.system.api.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.op.common.core.annotation.Excel; @@ -18,7 +18,7 @@ public class BaseBomComponentDTO extends BaseEntity { private static final long serialVersionUID = 1L; /** 主键 */ - private Long id; + private String id; /** BOM单号 */ @Excel(name = "BOM单号") @@ -31,7 +31,11 @@ public class BaseBomComponentDTO extends BaseEntity { /** 物料编码 */ @Excel(name = "物料编码") private String productCode; - + private String productDesc; + private String productModel; + private Integer bomCalculateNumber; + private Integer bomBaseNumber; + private String prepareId; /** 组件上层物料编码 */ @Excel(name = "组件上层物料编码") private String cumc; @@ -93,11 +97,53 @@ public class BaseBomComponentDTO extends BaseEntity { @Excel(name = "预留字段3") private String attr3; - public void setId(Long id) { + private String bomBo; + + public Integer getBomBaseNumber() { + return bomBaseNumber; + } + + public void setBomBaseNumber(Integer bomBaseNumber) { + this.bomBaseNumber = bomBaseNumber; + } + + public Integer getBomCalculateNumber() { + return bomCalculateNumber; + } + + public void setBomCalculateNumber(Integer bomCalculateNumber) { + this.bomCalculateNumber = bomCalculateNumber; + } + + public String getProductDesc() { + return productDesc; + } + + public void setProductDesc(String productDesc) { + this.productDesc = productDesc; + } + + public String getProductModel() { + return productModel; + } + + public void setProductModel(String productModel) { + this.productModel = productModel; + } + + public String getBomBo() { + return bomBo; + } + + public void setBomBo(String bomBo) { + this.bomBo = bomBo; + } + + public void setId(String id) { this.id = id; } - public Long getId() { + public String getId() { return id; } public void setBomCode(String bomCode) { diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomDTO.java similarity index 95% rename from op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomDTO.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomDTO.java index 8671f7cb..ee99bd0d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/BaseBomDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/BaseBomDTO.java @@ -1,4 +1,4 @@ -package com.op.plan.domain.dto; +package com.op.system.api.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.op.common.core.annotation.Excel; @@ -7,6 +7,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; +import java.util.List; /** * BOM物料管理对象 base_bom @@ -95,6 +96,16 @@ public class BaseBomDTO extends BaseEntity { @Excel(name = "是否在用") private String currentVersion; + private List<BaseBomComponentDTO> children; + + public List<BaseBomComponentDTO> getChildren() { + return children; + } + + public void setChildren(List<BaseBomComponentDTO> children) { + this.children = children; + } + public void setFactoryCode(String factoryCode) { this.factoryCode = factoryCode; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/WCSDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/WCSDTO.java index 940b3fbe..5460fc0a 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/WCSDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/WCSDTO.java @@ -21,6 +21,43 @@ public class WCSDTO { private String loadNo; + private String stationType; + private String stationNo; + private String rfidNo; + private String spec; + + public String getSpec() { + return spec; + } + + public void setSpec(String spec) { + this.spec = spec; + } + + public String getStationType() { + return stationType; + } + + public void setStationType(String stationType) { + this.stationType = stationType; + } + + public String getStationNo() { + return stationNo; + } + + public void setStationNo(String stationNo) { + this.stationNo = stationNo; + } + + public String getRfidNo() { + return rfidNo; + } + + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + private List<WCSDataDTO> data; private List<WCSDataItemsDTO> loadItems; diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesStationArriveDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesStationArriveDTO.java new file mode 100644 index 00000000..c6696a8f --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesStationArriveDTO.java @@ -0,0 +1,211 @@ +package com.op.system.api.domain.mes; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 晒盘车到位记录对象 mes_station_arrive + * + * @author Open Platform + * @date 2023-08-08 + */ +public class MesStationArriveDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 记录id */ + private String recordId; + + /** 请求id */ + @Excel(name = "请求id") + private String reqCode; + + /** 请求时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "请求时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date reqTime; + + /** 机台类型: */ + @Excel(name = "机台类型:") + private String stationType; + + /** 机台编号 */ + @Excel(name = "机台编号") + private String stationNo; + + /** rfid编号,条码能够区分是白坯料框还是筛盘车 */ + @Excel(name = "rfid编号,条码能够区分是白坯料框还是筛盘车") + private String rfidNo; + + /** 工单编码 */ + @Excel(name = "工单编码") + private String workorderCode; + + /** 批次编码 */ + @Excel(name = "批次编码") + private String batchCode; + + /** 物料编码 */ + @Excel(name = "物料编码") + private String cku; + + /** 规格 */ + @Excel(name = "规格") + private String spec; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + @Excel(name = "预留字段4") + private String attr4; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getRecordId() { + return recordId; + } + public void setReqCode(String reqCode) { + this.reqCode = reqCode; + } + + public String getReqCode() { + return reqCode; + } + public void setReqTime(Date reqTime) { + this.reqTime = reqTime; + } + + public Date getReqTime() { + return reqTime; + } + public void setStationType(String stationType) { + this.stationType = stationType; + } + + public String getStationType() { + return stationType; + } + public void setStationNo(String stationNo) { + this.stationNo = stationNo; + } + + public String getStationNo() { + return stationNo; + } + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + + public String getRfidNo() { + return rfidNo; + } + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderCode() { + return workorderCode; + } + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getBatchCode() { + return batchCode; + } + public void setCku(String cku) { + this.cku = cku; + } + + public String getCku() { + return cku; + } + public void setSpec(String spec) { + this.spec = spec; + } + + public String getSpec() { + return spec; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("reqCode", getReqCode()) + .append("reqTime", getReqTime()) + .append("stationType", getStationType()) + .append("stationNo", getStationNo()) + .append("rfidNo", getRfidNo()) + .append("workorderCode", getWorkorderCode()) + .append("batchCode", getBatchCode()) + .append("cku", getCku()) + .append("spec", getSpec()) + .append("remark", getRemark()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .toString(); + } +} diff --git a/op-common/op-common-log/op-common-log.iml b/op-common/op-common-log/op-common-log.iml index edd2ebab..152684b9 100644 --- a/op-common/op-common-log/op-common-log.iml +++ b/op-common/op-common-log/op-common-log.iml @@ -7,6 +7,7 @@ <facet type="web" name="Web"> <configuration> <webroots /> + <sourceRoots /> </configuration> </facet> </component> @@ -124,4 +125,4 @@ <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.69" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcutil-jdk15on:1.69" level="project" /> </component> -</module> \ No newline at end of file +</module> diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesStationArriveController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesStationArriveController.java new file mode 100644 index 00000000..91bdcef7 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesStationArriveController.java @@ -0,0 +1,97 @@ +package com.op.mes.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.op.common.log.annotation.Log; +import com.op.common.log.enums.BusinessType; +import com.op.common.security.annotation.RequiresPermissions; +import com.op.mes.domain.MesStationArrive; +import com.op.mes.service.IMesStationArriveService; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.core.utils.poi.ExcelUtil; +import com.op.common.core.web.page.TableDataInfo; + +/** + * 晒盘车到位记录Controller + * + * @author Open Platform + * @date 2023-08-08 + */ +@RestController +@RequestMapping("/arrive") +public class MesStationArriveController extends BaseController { + @Autowired + private IMesStationArriveService mesStationArriveService; + + /** + * 查询晒盘车到位记录列表 + */ + @RequiresPermissions("system:arrive:list") + @GetMapping("/list") + public TableDataInfo list(MesStationArrive mesStationArrive) { + startPage(); + List<MesStationArrive> list = mesStationArriveService.selectMesStationArriveList(mesStationArrive); + return getDataTable(list); + } + + /** + * 导出晒盘车到位记录列表 + */ + @RequiresPermissions("system:arrive:export") + @Log(title = "晒盘车到位记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, MesStationArrive mesStationArrive) { + List<MesStationArrive> list = mesStationArriveService.selectMesStationArriveList(mesStationArrive); + ExcelUtil<MesStationArrive> util = new ExcelUtil<MesStationArrive>(MesStationArrive.class); + util.exportExcel(response, list, "晒盘车到位记录数据"); + } + + /** + * 获取晒盘车到位记录详细信息 + */ + @RequiresPermissions("system:arrive:query") + @GetMapping(value = "/{recordId}") + public AjaxResult getInfo(@PathVariable("recordId") String recordId) { + return success(mesStationArriveService.selectMesStationArriveByRecordId(recordId)); + } + + /** + * 新增晒盘车到位记录 + */ + @RequiresPermissions("system:arrive:add") + @Log(title = "晒盘车到位记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody MesStationArrive mesStationArrive) { + return toAjax(mesStationArriveService.insertMesStationArrive(mesStationArrive)); + } + + /** + * 修改晒盘车到位记录 + */ + @RequiresPermissions("system:arrive:edit") + @Log(title = "晒盘车到位记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody MesStationArrive mesStationArrive) { + return toAjax(mesStationArriveService.updateMesStationArrive(mesStationArrive)); + } + + /** + * 删除晒盘车到位记录 + */ + @RequiresPermissions("system:arrive:remove") + @Log(title = "晒盘车到位记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{recordIds}") + public AjaxResult remove(@PathVariable String[] recordIds) { + return toAjax(mesStationArriveService.deleteMesStationArriveByRecordIds(recordIds)); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java index d9628cd1..da12ace2 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; * @date 2023-05-18 */ @RestController -@RequestMapping +@RequestMapping("/wcsInterface") public class WCSInterfaceController extends BaseController { @Autowired @@ -60,6 +60,7 @@ public class WCSInterfaceController extends BaseController { * @param * @return */ + //TODO; @Log(title = "请求送料", businessType = BusinessType.WCS) @PostMapping("/requestMaterialUnLoadNo") public WCSDTO requestMaterialUnLoadNo(@RequestBody WCSDTO wcsdto) { @@ -70,4 +71,53 @@ public class WCSInterfaceController extends BaseController { } return WCInterfaceService.requestMaterialUnLoadNo(wcsdto); } + /** + * RGV 送料完成 + * @param + * @return + */ + //TODO; + @Log(title = "送料完成", businessType = BusinessType.WCS) + @PostMapping("/unLoadMaterialCompleted") + public WCSDTO unLoadMaterialCompleted(@RequestBody WCSDTO wcsdto) { + if(StringUtils.isBlank(wcsdto.getFactory())){ + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return WCInterfaceService.requestMaterialUnLoadNo(wcsdto); + } + /** + * 生产机台到位信号 + * •空筛盘车到达成型机吊筛处,筛盘车到达烘房、筛盘车到达收坯吊筛处 + * @param + * @return + */ + @Log(title = "生产机台到位信号", businessType = BusinessType.WCS) + @PostMapping("/stationArrive") + public WCSDTO stationArrive(@RequestBody WCSDTO wcsdto) { + if(StringUtils.isBlank(wcsdto.getFactory())){ + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return WCInterfaceService.stationArrive(wcsdto); + } + /** + * 下一工序机台集合获取 + * •接口描述:成型机码垛完、暂存区、WCS 请求 MES 获取目的地集合 + * •触发时机:托盘到达 AGV 接驳口 + * @param + * @return + */ + @Log(title = "下一工序机台集合获取", businessType = BusinessType.WCS) + @PostMapping("/requestDestinationStations") + public WCSDTO requestDestinationStations(@RequestBody WCSDTO wcsdto) { + if(StringUtils.isBlank(wcsdto.getFactory())){ + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return WCInterfaceService.requestDestinationStations(wcsdto); + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesStationArrive.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesStationArrive.java new file mode 100644 index 00000000..31660885 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesStationArrive.java @@ -0,0 +1,221 @@ +package com.op.mes.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; + +/** + * 晒盘车到位记录对象 mes_station_arrive + * + * @author Open Platform + * @date 2023-08-08 + */ +public class MesStationArrive extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 记录id */ + private String recordId; + + /** 请求id */ + @Excel(name = "请求id") + private String reqCode; + + /** 请求时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "请求时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date reqTime; + + /** 机台类型: */ + @Excel(name = "机台类型:") + private String stationType; + + /** 机台编号 */ + @Excel(name = "机台编号") + private String stationNo; + + /** rfid编号,条码能够区分是白坯料框还是筛盘车 */ + @Excel(name = "rfid编号,条码能够区分是白坯料框还是筛盘车") + private String rfidNo; + + /** 工单编码 */ + @Excel(name = "工单编码") + private String workorderCode; + + /** 批次编码 */ + @Excel(name = "批次编码") + private String batchCode; + + /** 物料编码 */ + @Excel(name = "物料编码") + private String cku; + + /** 规格 */ + @Excel(name = "规格") + private String spec; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + @Excel(name = "预留字段4") + private String attr4; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + @Excel(name = "状态") + private String status; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getRecordId() { + return recordId; + } + public void setReqCode(String reqCode) { + this.reqCode = reqCode; + } + + public String getReqCode() { + return reqCode; + } + public void setReqTime(Date reqTime) { + this.reqTime = reqTime; + } + + public Date getReqTime() { + return reqTime; + } + public void setStationType(String stationType) { + this.stationType = stationType; + } + + public String getStationType() { + return stationType; + } + public void setStationNo(String stationNo) { + this.stationNo = stationNo; + } + + public String getStationNo() { + return stationNo; + } + public void setRfidNo(String rfidNo) { + this.rfidNo = rfidNo; + } + + public String getRfidNo() { + return rfidNo; + } + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderCode() { + return workorderCode; + } + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getBatchCode() { + return batchCode; + } + public void setCku(String cku) { + this.cku = cku; + } + + public String getCku() { + return cku; + } + public void setSpec(String spec) { + this.spec = spec; + } + + public String getSpec() { + return spec; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("reqCode", getReqCode()) + .append("reqTime", getReqTime()) + .append("stationType", getStationType()) + .append("stationNo", getStationNo()) + .append("rfidNo", getRfidNo()) + .append("workorderCode", getWorkorderCode()) + .append("batchCode", getBatchCode()) + .append("cku", getCku()) + .append("spec", getSpec()) + .append("remark", getRemark()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .toString(); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java index ff03ef13..7258badb 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java @@ -17,4 +17,6 @@ public interface MesMapper { List<WCSDataItemsDTO> getWetPlanDetail(WCSDTO wcsdto); + + void getSaveStationArrive(WCSDTO wcsdto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesStationArriveMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesStationArriveMapper.java new file mode 100644 index 00000000..52998f03 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesStationArriveMapper.java @@ -0,0 +1,63 @@ +package com.op.mes.mapper; + +import java.util.List; + +import com.op.mes.domain.MesStationArrive; +import org.apache.ibatis.annotations.Mapper; + +/** + * 晒盘车到位记录Mapper接口 + * + * @author Open Platform + * @date 2023-08-08 + */ +@Mapper +public interface MesStationArriveMapper { + /** + * 查询晒盘车到位记录 + * + * @param recordId 晒盘车到位记录主键 + * @return 晒盘车到位记录 + */ + public MesStationArrive selectMesStationArriveByRecordId(String recordId); + + /** + * 查询晒盘车到位记录列表 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 晒盘车到位记录集合 + */ + public List<MesStationArrive> selectMesStationArriveList(MesStationArrive mesStationArrive); + + /** + * 新增晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + public int insertMesStationArrive(MesStationArrive mesStationArrive); + + /** + * 修改晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + public int updateMesStationArrive(MesStationArrive mesStationArrive); + + /** + * 删除晒盘车到位记录 + * + * @param recordId 晒盘车到位记录主键 + * @return 结果 + */ + public int deleteMesStationArriveByRecordId(String recordId); + + /** + * 批量删除晒盘车到位记录 + * + * @param recordIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesStationArriveByRecordIds(String[] recordIds); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesStationArriveService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesStationArriveService.java new file mode 100644 index 00000000..a5cfcd74 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesStationArriveService.java @@ -0,0 +1,60 @@ +package com.op.mes.service; + +import java.util.List; +import com.op.mes.domain.MesStationArrive; + +/** + * 晒盘车到位记录Service接口 + * + * @author Open Platform + * @date 2023-08-08 + */ +public interface IMesStationArriveService { + /** + * 查询晒盘车到位记录 + * + * @param recordId 晒盘车到位记录主键 + * @return 晒盘车到位记录 + */ + public MesStationArrive selectMesStationArriveByRecordId(String recordId); + + /** + * 查询晒盘车到位记录列表 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 晒盘车到位记录集合 + */ + public List<MesStationArrive> selectMesStationArriveList(MesStationArrive mesStationArrive); + + /** + * 新增晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + public int insertMesStationArrive(MesStationArrive mesStationArrive); + + /** + * 修改晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + public int updateMesStationArrive(MesStationArrive mesStationArrive); + + /** + * 批量删除晒盘车到位记录 + * + * @param recordIds 需要删除的晒盘车到位记录主键集合 + * @return 结果 + */ + public int deleteMesStationArriveByRecordIds(String[] recordIds); + + /** + * 删除晒盘车到位记录信息 + * + * @param recordId 晒盘车到位记录主键 + * @return 结果 + */ + public int deleteMesStationArriveByRecordId(String recordId); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java index 113b30a9..2a762d33 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java @@ -18,4 +18,8 @@ public interface IWCSInterfaceService { WCSDTO loadMaterialCompleted(WCSDTO wcsdto); WCSDTO requestMaterialUnLoadNo(WCSDTO wcsdto); + + WCSDTO stationArrive(WCSDTO wcsdto); + + WCSDTO requestDestinationStations(WCSDTO wcsdto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index cf95e743..74e9eb42 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -1,7 +1,13 @@ package com.op.mes.service.impl; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.bean.BeanUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; +import com.op.mes.domain.MesStationArrive; import com.op.mes.mapper.MesMapper; +import com.op.mes.mapper.MesStationArriveMapper; import com.op.mes.service.IWCSInterfaceService; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.dto.WCSDataItemsDTO; @@ -12,7 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; /** - * 订单Service业务层处理 + * wcs接口业务层处理 * * @author Open Platform * @date 2023-07-13 @@ -22,28 +28,32 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { @Autowired private MesMapper mesMapper; + @Autowired + private MesStationArriveMapper mesStationArriveMapper; + /** * RGV请求接料 * { - * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID - * "reqTime": "2023-06-30 21:24:04", //请求时间 - * "sku": "sku01" //物料编码 - * “factory”:"工厂编码" + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "reqTime": "2023-06-30 21:24:04", //请求时间 + * "sku": "sku01" //物料编码 + * “factory”:"工厂编码" * } * 返回 * { - * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求编号 - * "code": 0, //返回代码 - * "message": "OK", //返回信息 - * "loadItems": [ - * { - * "loadNo": "A1" //上料机台,上料罐 - * }, - * { - * "loadNo": "A2" //上料机台,上料罐 - * } - * ] + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求编号 + * "code": 0, //返回代码 + * "message": "OK", //返回信息 + * "loadItems": [ + * { + * "loadNo": "A1" //上料机台,上料罐 + * }, + * { + * "loadNo": "A2" //上料机台,上料罐 * } + * ] + * } + * * @param wcsdto * @return */ @@ -59,48 +69,142 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { dto.setMessage("OK"); return dto; } - /** RGV 接料完成(我不要) - * { - * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID - * "reqTime": "2023-06-30 21:24:04",//请求时间 - * "loadNo": "A1"//接料 - * "factory":工厂编码 - * } - * 返回 - * { - * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID - * "code": 0,//返回代码 - * "message": "OK"//返回信息 - * } + + /** + * RGV 接料完成(我不要) + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID + * "reqTime": "2023-06-30 21:24:04",//请求时间 + * "loadNo": "A1"//接料 + * "factory":工厂编码 + * } + * 返回 + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID + * "code": 0,//返回代码 + * "message": "OK"//返回信息 + * } */ @Override public WCSDTO loadMaterialCompleted(WCSDTO wcsdto) { return null; } - /**RGV 请求送料 - { - "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID - "reqTime": "2023-06-30 21:24:04", //请求时间 - "sku": "sku01" //对应的湿料的物料编码 - } - JSON - { - "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID - "code": 0,//返回代码 - "message": "OK",//返回信息 - "unLoadItems": [ - { - "unloadNo": "B1"//送料机台,成型机 - }, - { - "unloadNo": "B2"//送料机台,成型机 - } - ] - } - **/ + /** + * RGV 请求送料 + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "reqTime": "2023-06-30 21:24:04", //请求时间 + * "sku": "sku01" //对应的湿料的物料编码 + * } + * <p> + * JSON + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0",//请求ID + * "code": 0,//返回代码 + * "message": "OK",//返回信息 + * "unLoadItems": [ + * { + * "unloadNo": "B1"//送料机台,成型机 + * }, + * { + * "unloadNo": "B2"//送料机台,成型机 + * } + * ] + * } + **/ @Override public WCSDTO requestMaterialUnLoadNo(WCSDTO wcsdto) { + //TODO; + return null; + } + + /** + * 生产机台到位信号 + * JSON + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "reqTime": "2023-06-30 21:24:04", //请求时间 + * "stationType": "1", //机台类型: 1.成型机、2.烘房、3收坯机、4.收坯码垛 + * "stationNo": "S1", //机台编号 + * "rfidNo": "r12345" //rfid编号,条码能够区分是白坯料框还是筛盘车 + * } + * <p> + * JSON + * { + * <p> + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "code": 0, //返回代码 + * "message": "OK", //返回信息 + * "sku": "sku01", //托盘到位信号 + * "spec": "150", //规格 + * } + * + * @param wcsdto + * @return + */ + @Override + public WCSDTO stationArrive(WCSDTO wcsdto) { + DynamicDataSourceContextHolder.push(wcsdto.getFactory()); + + MesStationArrive sa = new MesStationArrive(); + BeanUtils.copyBeanProp(sa, wcsdto); + sa.setRecordId(IdUtils.fastSimpleUUID()); + sa.setCreateTime(DateUtils.getNowDate()); + sa.setCreateBy(SecurityUtils.getUsername()); + sa.setStatus("0");//初始到达 + //保存筛盘车到达记录//mes_station_arrive(设备跟机台绑定) + mesStationArriveMapper.insertMesStationArrive(sa); + + WCSDTO dto = new WCSDTO(); + BeanUtils.copyBeanProp(dto, wcsdto); + dto.setSku("");//TODO; + dto.setSpec("");//TODO; + dto.setCode("0"); + dto.setMessage("OK"); + return dto; + } + + /**下一工序机台集合获取 + * JSON + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "reqTime": "2023-06-30 21:24:04", //请求时间, + * "rfidNo": "r12345" //rfid编号 + * } + * + * JSON + * { + * "reqCode": "eb7f8e9f-d1e8-499e-9bcb-e72d3ac195b0", //请求ID + * "code": 0, //返回代码 + * "message": "OK", //返回信息 + * "stationType": "2", //目的机台类型 2烘房 3收坯机 + * "sku": "sku01", //物料编码 + * "spec": "150", //规格 + * "productionState": "K01", //当前工艺状态 + * "stationNos": [ + * { + * "stationNo": "F1", //目的站台编号 + * "qty": 2 //针对于烘房前面的当前筛盘车的数量,如果数量大于2就不会往改烘房分配 + * }, + * { + * "stationNo": "F3", //目的站台编号 + * "qty": 2 //针对于烘房前面的当前筛盘车的数量,如果数量大于2就不会往改烘房分配 + * }, + * { + * "stationNo": "F3", //目的站台编号 + * "qty": 2 //针对于烘房前面的当前筛盘车的数量,如果数量大于2就不会往改烘房分配 + * } + * ], + * } + * @param wcsdto + * @return + */ + @Override + public WCSDTO requestDestinationStations(WCSDTO wcsdto) { + DynamicDataSourceContextHolder.push(wcsdto.getFactory()); + //mes_station_arrive(设备跟机台绑定) + //MesStationArrive msa = mesStationArriveMapper.getInfoByRecordId(wcsdto.getRfidNo()); return null; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesStationArriveServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesStationArriveServiceImpl.java new file mode 100644 index 00000000..3cf8d49e --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesStationArriveServiceImpl.java @@ -0,0 +1,89 @@ +package com.op.mes.service.impl; + +import java.util.List; +import com.op.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.op.mes.mapper.MesStationArriveMapper; +import com.op.mes.domain.MesStationArrive; +import com.op.mes.service.IMesStationArriveService; + +/** + * 晒盘车到位记录Service业务层处理 + * + * @author Open Platform + * @date 2023-08-08 + */ +@Service +public class MesStationArriveServiceImpl implements IMesStationArriveService { + @Autowired + private MesStationArriveMapper mesStationArriveMapper; + + /** + * 查询晒盘车到位记录 + * + * @param recordId 晒盘车到位记录主键 + * @return 晒盘车到位记录 + */ + @Override + public MesStationArrive selectMesStationArriveByRecordId(String recordId) { + return mesStationArriveMapper.selectMesStationArriveByRecordId(recordId); + } + + /** + * 查询晒盘车到位记录列表 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 晒盘车到位记录 + */ + @Override + public List<MesStationArrive> selectMesStationArriveList(MesStationArrive mesStationArrive) { + return mesStationArriveMapper.selectMesStationArriveList(mesStationArrive); + } + + /** + * 新增晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + @Override + public int insertMesStationArrive(MesStationArrive mesStationArrive) { + mesStationArrive.setCreateTime(DateUtils.getNowDate()); + return mesStationArriveMapper.insertMesStationArrive(mesStationArrive); + } + + /** + * 修改晒盘车到位记录 + * + * @param mesStationArrive 晒盘车到位记录 + * @return 结果 + */ + @Override + public int updateMesStationArrive(MesStationArrive mesStationArrive) { + mesStationArrive.setUpdateTime(DateUtils.getNowDate()); + return mesStationArriveMapper.updateMesStationArrive(mesStationArrive); + } + + /** + * 批量删除晒盘车到位记录 + * + * @param recordIds 需要删除的晒盘车到位记录主键 + * @return 结果 + */ + @Override + public int deleteMesStationArriveByRecordIds(String[] recordIds) { + return mesStationArriveMapper.deleteMesStationArriveByRecordIds(recordIds); + } + + /** + * 删除晒盘车到位记录信息 + * + * @param recordId 晒盘车到位记录主键 + * @return 结果 + */ + @Override + public int deleteMesStationArriveByRecordId(String recordId) { + return mesStationArriveMapper.deleteMesStationArriveByRecordId(recordId); + } +} diff --git a/op-modules/op-mes/src/main/resources/mapper/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/MesPrepareDetailMapper.xml index b9934f24..8c63ac04 100644 --- a/op-modules/op-mes/src/main/resources/mapper/MesPrepareDetailMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/MesPrepareDetailMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.op.mes.mapper.MesPrepareDetailMapper"> - + <resultMap type="MesPrepareDetail" id="MesPrepareDetailResult"> <result property="recordId" column="record_id" /> <result property="prepareId" column="prepare_id" /> @@ -29,12 +29,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" </resultMap> <sql id="selectMesPrepareDetailVo"> - select record_id, prepare_id, material_code, materail_name, materail_spc, unit, quantity, product_date, shift_id, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, prod_type, factory_code from mes_prepare_detail + select record_id, prepare_id, material_code, materail_name, materail_spc, unit, + quantity, product_date, shift_id, status, remark, attr1, attr2, attr3, attr4, + create_by, create_time, update_by, update_time, prod_type, factory_code + from mes_prepare_detail </sql> <select id="selectMesPrepareDetailList" parameterType="MesPrepareDetail" resultMap="MesPrepareDetailResult"> <include refid="selectMesPrepareDetailVo"/> - <where> + <where> <if test="prepareId != null and prepareId != ''"> and prepare_id = #{prepareId}</if> <if test="materialCode != null and materialCode != ''"> and material_code = #{materialCode}</if> <if test="materailName != null and materailName != ''"> and materail_name like concat('%', #{materailName}, '%')</if> @@ -52,12 +55,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if> </where> </select> - + <select id="selectMesPrepareDetailByRecordId" parameterType="String" resultMap="MesPrepareDetailResult"> <include refid="selectMesPrepareDetailVo"/> where record_id = #{recordId} </select> - + <insert id="insertMesPrepareDetail" parameterType="MesPrepareDetail"> insert into mes_prepare_detail <trim prefix="(" suffix=")" suffixOverrides=","> @@ -140,9 +143,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" </delete> <delete id="deleteMesPrepareDetailByRecordIds" parameterType="String"> - delete from mes_prepare_detail where record_id in + delete from mes_prepare_detail where record_id in <foreach item="recordId" collection="array" open="(" separator="," close=")"> #{recordId} </foreach> </delete> -</mapper> \ No newline at end of file +</mapper> diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index a221fd07..197c1c0e 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -10,4 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from pro_wet_material_plan_detail where material_code = #{sku} and CONVERT(varchar(10),plan_time, 120) = CONVERT(varchar(10),#{reqTime}, 120) </select> + <select id="getSaveStationArrive"> + + </select> </mapper> diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesStationArriveMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesStationArriveMapper.xml new file mode 100644 index 00000000..e3d6d573 --- /dev/null +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesStationArriveMapper.xml @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.op.mes.mapper.MesStationArriveMapper"> + + <resultMap type="MesStationArrive" id="MesStationArriveResult"> + <result property="recordId" column="record_id" /> + <result property="reqCode" column="reqCode" /> + <result property="reqTime" column="reqTime" /> + <result property="stationType" column="stationType" /> + <result property="stationNo" column="stationNo" /> + <result property="rfidNo" column="rfidNo" /> + <result property="workorderCode" column="workorder_code" /> + <result property="batchCode" column="batch_code" /> + <result property="cku" column="cku" /> + <result property="spec" column="spec" /> + <result property="remark" column="remark" /> + <result property="attr1" column="attr1" /> + <result property="attr2" column="attr2" /> + <result property="attr3" column="attr3" /> + <result property="attr4" column="attr4" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="factoryCode" column="factory_code" /> + </resultMap> + + <sql id="selectMesStationArriveVo"> + select record_id, reqCode, reqTime, stationType, stationNo, rfidNo, workorder_code, batch_code, cku, spec, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code from mes_station_arrive + </sql> + + <select id="selectMesStationArriveList" parameterType="MesStationArrive" resultMap="MesStationArriveResult"> + <include refid="selectMesStationArriveVo"/> + <where> + <if test="reqCode != null and reqCode != ''"> and reqCode = #{reqCode}</if> + <if test="reqTime != null "> and reqTime = #{reqTime}</if> + <if test="stationType != null and stationType != ''"> and stationType = #{stationType}</if> + <if test="stationNo != null and stationNo != ''"> and stationNo = #{stationNo}</if> + <if test="rfidNo != null and rfidNo != ''"> and rfidNo = #{rfidNo}</if> + <if test="workorderCode != null and workorderCode != ''"> and workorder_code = #{workorderCode}</if> + <if test="batchCode != null and batchCode != ''"> and batch_code = #{batchCode}</if> + <if test="cku != null and cku != ''"> and cku = #{cku}</if> + <if test="spec != null and spec != ''"> and spec = #{spec}</if> + <if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if> + <if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if> + <if test="attr3 != null and attr3 != ''"> and attr3 = #{attr3}</if> + <if test="attr4 != null and attr4 != ''"> and attr4 = #{attr4}</if> + <if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if> + </where> + </select> + + <select id="selectMesStationArriveByRecordId" parameterType="String" resultMap="MesStationArriveResult"> + <include refid="selectMesStationArriveVo"/> + where record_id = #{recordId} + </select> + + <insert id="insertMesStationArrive" parameterType="MesStationArrive"> + insert into mes_station_arrive + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="recordId != null">record_id,</if> + <if test="reqCode != null and reqCode != ''">reqCode,</if> + <if test="reqTime != null">reqTime,</if> + <if test="stationType != null">stationType,</if> + <if test="stationNo != null">stationNo,</if> + <if test="rfidNo != null">rfidNo,</if> + <if test="workorderCode != null and workorderCode != ''">workorder_code,</if> + <if test="batchCode != null and batchCode != ''">batch_code,</if> + <if test="cku != null">cku,</if> + <if test="spec != null">spec,</if> + <if test="remark != null">remark,</if> + <if test="attr1 != null">attr1,</if> + <if test="attr2 != null">attr2,</if> + <if test="attr3 != null">attr3,</if> + <if test="attr4 != null">attr4,</if> + <if test="createBy != null">create_by,</if> + <if test="createTime != null">create_time,</if> + <if test="updateBy != null">update_by,</if> + <if test="updateTime != null">update_time,</if> + <if test="factoryCode != null">factory_code,</if> + <if test="status != null">status,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="recordId != null">#{recordId},</if> + <if test="reqCode != null and reqCode != ''">#{reqCode},</if> + <if test="reqTime != null">#{reqTime},</if> + <if test="stationType != null">#{stationType},</if> + <if test="stationNo != null">#{stationNo},</if> + <if test="rfidNo != null">#{rfidNo},</if> + <if test="workorderCode != null and workorderCode != ''">#{workorderCode},</if> + <if test="batchCode != null and batchCode != ''">#{batchCode},</if> + <if test="cku != null">#{cku},</if> + <if test="spec != null">#{spec},</if> + <if test="remark != null">#{remark},</if> + <if test="attr1 != null">#{attr1},</if> + <if test="attr2 != null">#{attr2},</if> + <if test="attr3 != null">#{attr3},</if> + <if test="attr4 != null">#{attr4},</if> + <if test="createBy != null">#{createBy},</if> + <if test="createTime != null">#{createTime},</if> + <if test="updateBy != null">#{updateBy},</if> + <if test="updateTime != null">#{updateTime},</if> + <if test="factoryCode != null">#{factoryCode},</if> + <if test="status != null">#{status},</if> + </trim> + </insert> + + <update id="updateMesStationArrive" parameterType="MesStationArrive"> + update mes_station_arrive + <trim prefix="SET" suffixOverrides=","> + <if test="reqCode != null and reqCode != ''">reqCode = #{reqCode},</if> + <if test="reqTime != null">reqTime = #{reqTime},</if> + <if test="stationType != null">stationType = #{stationType},</if> + <if test="stationNo != null">stationNo = #{stationNo},</if> + <if test="rfidNo != null">rfidNo = #{rfidNo},</if> + <if test="workorderCode != null and workorderCode != ''">workorder_code = #{workorderCode},</if> + <if test="batchCode != null and batchCode != ''">batch_code = #{batchCode},</if> + <if test="cku != null">cku = #{cku},</if> + <if test="spec != null">spec = #{spec},</if> + <if test="remark != null">remark = #{remark},</if> + <if test="attr1 != null">attr1 = #{attr1},</if> + <if test="attr2 != null">attr2 = #{attr2},</if> + <if test="attr3 != null">attr3 = #{attr3},</if> + <if test="attr4 != null">attr4 = #{attr4},</if> + <if test="createBy != null">create_by = #{createBy},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + <if test="updateTime != null">update_time = #{updateTime},</if> + <if test="factoryCode != null">factory_code = #{factoryCode},</if> + </trim> + where record_id = #{recordId} + </update> + + <delete id="deleteMesStationArriveByRecordId" parameterType="String"> + delete from mes_station_arrive where record_id = #{recordId} + </delete> + + <delete id="deleteMesStationArriveByRecordIds" parameterType="String"> + delete from mes_station_arrive where record_id in + <foreach item="recordId" collection="array" open="(" separator="," close=")"> + #{recordId} + </foreach> + </delete> +</mapper> diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java index 22457a17..145b8157 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrder.java @@ -57,6 +57,16 @@ public class ProOrder extends TreeEntity { /** 任务清单 */ private String workerOrder; + private String bomBo; + + public String getBomBo() { + return bomBo; + } + + public void setBomBo(String bomBo) { + this.bomBo = bomBo; + } + public Long getQuantitySplit() { return quantitySplit; } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java index e926a6c1..8b6c57b8 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java @@ -138,6 +138,16 @@ public class ProOrderWorkorder extends TreeEntity { // 料罐名称(湿料计划模块使用) private String bucketName; + private String prepareId; + + public String getPrepareId() { + return prepareId; + } + + public void setPrepareId(String prepareId) { + this.prepareId = prepareId; + } + public String getBucketName() { return bucketName; } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 3f5801ad..11b53756 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -122,6 +122,14 @@ public interface ProOrderWorkorderMapper { void createPrepare(MesPrepare mesPrepare); + ProOrder getOrderCodeById(String workorderId); + + ProOrder getOrderCodeBySonCode(String parentOrder); + + List<BaseBomComponentDTO> getBomComponents(@Param("order") ProOrder order,@Param("list") List<BaseBomComponentDTO> cumsDtos); + + void createPrepareDetails(@Param("list") List<BaseBomComponentDTO> allChildren,@Param("wo") ProOrderWorkorder wo); + List<ProOrderWorkorder> selectProOrderWorkerderByWorkerIds(String[] ids); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 857d0c5a..88a04434 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -8,11 +8,12 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.plan.domain.*; -import com.op.plan.domain.dto.BaseBomDTO; import com.op.plan.domain.dto.ProOrderDTO; import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.mapper.*; import com.op.plan.service.IProOrderWorkorderService; +import com.op.system.api.domain.dto.BaseBomComponentDTO; +import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.dto.MesPrepare; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; +import java.util.stream.Collectors; import static com.op.common.core.web.domain.AjaxResult.error; import static com.op.common.core.web.domain.AjaxResult.success; @@ -167,6 +169,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { /** * 下发生产工单信息 + * (附:回传sap工单,获取工单对应的领料单) * @param workorderIds 生产工单主键 * @return 结果 */ @@ -193,24 +196,85 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { } } } - //生成备料单 - for(String workorderId:workorderIds){ - ProOrderWorkorder orderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(workorderId); - //备(领)料主单 - MesPrepare mesPrepare = new MesPrepare(); - BeanUtils.copyBeanProp(mesPrepare,orderWorkorder); - mesPrepare.setPrepareId(orderWorkorder.getWorkorderCode()+"L");//领料单号 - mesPrepare.setWorkorderCode(orderWorkorder.getWorkorderCode()); - mesPrepare.setCreateBy(SecurityUtils.getUsername()); - mesPrepare.setCreateTime(DateUtils.getNowDate()); - mesPrepare.setStatus("L0");//待确认 - proOrderWorkorderMapper.createPrepare(mesPrepare); - //备(领)料明细-获取bom - - } +// //生成备料单 +// for(String workorderId:workorderIds){ +// ProOrderWorkorder orderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(workorderId); +// //备(领)料主单 +// MesPrepare mesPrepare = new MesPrepare(); +// BeanUtils.copyBeanProp(mesPrepare,orderWorkorder); +// mesPrepare.setPrepareId(orderWorkorder.getWorkorderCode()+"L");//领料单号 +// mesPrepare.setWorkorderCode(orderWorkorder.getWorkorderCode()); +// mesPrepare.setCreateBy(SecurityUtils.getUsername()); +// mesPrepare.setCreateTime(DateUtils.getNowDate()); +// mesPrepare.setStatus("L0");//待确认 +// proOrderWorkorderMapper.createPrepare(mesPrepare); +// //备(领)料明细 +// orderWorkorder.setPrepareId(mesPrepare.getPrepareId()); +// List<BaseBomComponentDTO> boms = this.getBomDtos(workorderId); +// List<BaseBomComponentDTO> allChildren = new ArrayList<>(); +// BaseBomComponentDTO bc = new BaseBomComponentDTO(); +// bc.setComponent(orderWorkorder.getProductCode()); +// getLastChildren(boms, allChildren, bc); +// allChildren.forEach((entity) ->{ +// entity.setCreateTime(DateUtils.getNowDate()); +// entity.setCreateBy(SecurityUtils.getUsername()); +// entity.setId(IdUtils.fastSimpleUUID()); +// +// }); +// proOrderWorkorderMapper.createPrepareDetails(allChildren,orderWorkorder); +// +// } //下达工单 return proOrderWorkorderMapper.downProOrderWorkorderByWorkorderIds(workorderIds); } +// //获取最低级材料 +// private void getLastChildren(List<BaseBomComponentDTO> all, List<BaseBomComponentDTO> allChildren , BaseBomComponentDTO bc) { +// List<BaseBomComponentDTO> cList = all.stream().filter(item -> item.getCumc().equals(bc.getComponent())) +// .collect(Collectors.toList()); +// if(CollectionUtils.isEmpty(cList)){ +// allChildren.add(bc); +// }else{ +// for(BaseBomComponentDTO bcc : cList){ +// getLastChildren(all, allChildren ,bcc); +// } +// } +// } +// //获取顶级定单的bom组成 +// private List<BaseBomComponentDTO> getBomDtos(String workorderId){ +// List<BaseBomComponentDTO> bomdtoAdds = new ArrayList<>();//所有数据 +// +// List<BaseBomComponentDTO> cumsDtos = new ArrayList<>(); +// BaseBomComponentDTO cumsDto = new BaseBomComponentDTO(); +// ProOrder order = this.getTopOrder(workorderId); +// cumsDto.setCumc(order.getProdCode()); +// cumsDtos.add(cumsDto); +// List<BaseBomComponentDTO> bomdtos = proOrderWorkorderMapper.getBomComponents(order,cumsDtos);//最新版本的第一层子 +// bomdtoAdds.addAll(bomdtos); +// Boolean isTrue = true; +// while(isTrue){ +// List<BaseBomComponentDTO> bomdtoTop = new ArrayList<>(); +// bomdtos.forEach(e->e.setCumc(e.getComponent())); +// bomdtoTop.addAll(bomdtos); +// List<BaseBomComponentDTO> bomdtoSon = proOrderWorkorderMapper.getBomComponents(order,bomdtoTop); +// if(CollectionUtils.isEmpty(bomdtoSon)){ +// isTrue = false; +// }else{ +// bomdtos = bomdtoSon; +// bomdtoAdds.addAll(bomdtoSon); +// } +// } +// +// return bomdtos; +// } +// //根据工单子单获取最顶级订单的母单 +// private ProOrder getTopOrder(String workorderId){ +// ProOrder topOrder = proOrderWorkorderMapper.getOrderCodeById(workorderId); +// while(!"0".equals(topOrder.getParentOrder())&& com.op.common.core.utils.StringUtils.isNotEmpty(topOrder.getParentOrder())){ +// topOrder = proOrderWorkorderMapper.getOrderCodeBySonCode(topOrder.getParentOrder()); +// } +// return topOrder; +// } + /** * 通过工单信息查询订单信息和工单信息 diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 1c7c163d..1127b13d 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -139,6 +139,17 @@ #{ids} </foreach> </select> + <select id="getOrderCodeById" resultType="com.op.plan.domain.ProOrder"> + select order_code orderCode, + bom_bo bomBo + from pro_order_workorder where workorder_id = #{workorderId} + </select> + <select id="getOrderCodeBySonCode" resultType="com.op.plan.domain.ProOrder"> + select parent_order parentOrder, + order_code orderCode, + bom_bo bomBo + from pro_order where order_code = #{orderCode} + </select> <insert id="insertProOrderWorkorder" parameterType="ProOrderWorkorder"> insert into pro_order_workorder @@ -278,6 +289,47 @@ <if test="quantity != null">#{quantity},</if> </trim> </insert> + <select id="getBomComponents" resultType="com.op.system.api.domain.dto.BaseBomComponentDTO"> + select po.order_code orderCode, + po.bom_bo bomBo, + po.factory_code factoryCode, + po.prod_type prodType, + bbc.cumc, + bbc.component, + bbc.standard_dosage standardDosage, + bbc.loss_rate lossRate, + bbc.loss_amount lossAmount, + bbc.cilosses, + bbc.component_unit componentUnit, + bb.bom_base_number bomBaseNumber, + bb.bom_calculate_number bomCalculateNumber, + bp.product_code productCode, + bp.product_desc_zh productDesc, + bp.product_model productModel + from base_bom_component bbc + left join base_bom bb on bbc.bom_code = bbc.bom_code + left join pro_order po on bbc.bom_bo = po.bom_bo + left join base_product bp on bp.product_code = bbc.bom_code + where bbc.bom_bo = #{order.bomBo} and po.order_code = #{order.orderCode} and bbc.cumc in + <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> + #{item.cumc} + </foreach> + </select> + <insert id="createPrepareDetails"> + insert into mes_prepare_detail + ( + record_id, prepare_id, material_code, materail_name, materail_spc, unit, + quantity, product_date, shift_id, + create_by,create_time, prod_type, factory_code + )values + <foreach collection="list" item="item" index="index" separator=","> + ( + #{item.id},#{wo.prepareId},#{wo.productCode},#{wo.productDesc},#{wo.productModel},#{item.componentUnit}, + #{item.quantity},#{wo.productDate},#{wo.shiftId}, + #{item.createBy},#{item.createTime},#{wo.prodType},#{wo.factoryCode} + ) + </foreach> + </insert> <update id="updateProOrderWorkorder" parameterType="ProOrderWorkorder"> update pro_order_workorder