diff --git a/op-modules/op-mes/op-modules-mes.iml b/op-modules/op-mes/op-modules-mes.iml
deleted file mode 100644
index c65dbc08b..000000000
--- a/op-modules/op-mes/op-modules-mes.iml
+++ /dev/null
@@ -1,224 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapController.java
new file mode 100644
index 000000000..703c1d070
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapController.java
@@ -0,0 +1,137 @@
+package com.op.mes.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.op.mes.domain.ProEmbryoScrap;
+import com.op.mes.domain.ProEmbryoScrapDetail;
+import com.op.mes.domain.Product;
+import com.op.mes.domain.SysPost;
+import com.op.mes.service.IProEmbryoScrapDetailService;
+import com.op.mes.service.IProEmbryoScrapService;
+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.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-01
+ */
+@RestController
+@RequestMapping("/scrap")
+public class ProEmbryoScrapController extends BaseController {
+ @Autowired
+ private IProEmbryoScrapService proEmbryoScrapService;
+
+
+ /**
+ * 查询报废列表
+ */
+ @RequiresPermissions("mes:scrap:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProEmbryoScrap proEmbryoScrap) {
+ startPage();
+ List list = proEmbryoScrapService.selectProEmbryoScrapList(proEmbryoScrap);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出报废列表
+ */
+ @RequiresPermissions("mes:scrap:export")
+ @Log(title = "报废", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ProEmbryoScrap proEmbryoScrap) {
+ List list = proEmbryoScrapService.selectProEmbryoScrapList(proEmbryoScrap);
+ ExcelUtil util = new ExcelUtil(ProEmbryoScrap.class);
+ util.exportExcel(response, list, "报废列表数据");
+ }
+ /**
+ * 获取报废详细信息
+ */
+ @RequiresPermissions("mes:scrap:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+
+ return success(proEmbryoScrapService.selectProEmbryoScrapById(id));
+ }
+
+ /**
+ * 新增报废
+ */
+ @RequiresPermissions("mes:scrap:add")
+ @Log(title = "报废", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ProEmbryoScrap proEmbryoScrap) {
+ return toAjax(proEmbryoScrapService.insertProEmbryoScrap(proEmbryoScrap));
+ }
+
+ /**
+ * 修改报废
+ */
+ @RequiresPermissions("mes:scrap:edit")
+ @Log(title = "报废", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ProEmbryoScrap proEmbryoScrap) {
+
+ return toAjax(proEmbryoScrapService.updateProEmbryoScrap(proEmbryoScrap));
+ }
+
+ /**
+ * 删除报废
+ */
+ @RequiresPermissions("mes:scrap:remove")
+ @Log(title = "报废", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(proEmbryoScrapService.deleteProEmbryoScrapByIds(ids));
+ }
+ //搜索物料接口
+// @GetMapping("/selectAll")
+// public AjaxResult selectProEmbryoScrap(){
+// return AjaxResult.success(proEmbryoScrapService.selectProEmbryoScrap());
+// }
+
+ /**
+ * 查询所有物料名称接口
+ * @return
+ */
+ @GetMapping("/selectAllMaterial")
+ public AjaxResult listMaterial(){
+ return AjaxResult.success(proEmbryoScrapService.showAllMaterial());
+ }
+
+ /**
+ * 查询所有工位
+ * @return
+ */
+ @GetMapping("/selectAllSysPost")
+ public AjaxResult listSysPost(){
+ return AjaxResult.success(proEmbryoScrapService.showSysPost());
+ }
+
+ /**
+ * 查询所有工单信息
+ * @return
+ */
+ @GetMapping("/selectAllWorkOrder")
+ public AjaxResult listWorkOrder(){
+ return AjaxResult.success(proEmbryoScrapService.selectAllWorkOrder());
+ }
+
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapDetailController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapDetailController.java
new file mode 100644
index 000000000..31c394eef
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProEmbryoScrapDetailController.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.ProEmbryoScrapDetail;
+import com.op.mes.service.IProEmbryoScrapDetailService;
+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-01
+ */
+@RestController
+@RequestMapping("/detail")
+public class ProEmbryoScrapDetailController extends BaseController {
+ @Autowired
+ private IProEmbryoScrapDetailService proEmbryoScrapDetailService;
+
+ /**
+ * 查询报废详情列表
+ */
+// @RequiresPermissions("system:detail:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProEmbryoScrapDetail proEmbryoScrapDetail) {
+ startPage();
+ List list = proEmbryoScrapDetailService.selectProEmbryoScrapDetailList(proEmbryoScrapDetail);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出报废详情列表
+ */
+// @RequiresPermissions("system:detail:export")
+ @Log(title = "报废详情", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ProEmbryoScrapDetail proEmbryoScrapDetail) {
+ List list = proEmbryoScrapDetailService.selectProEmbryoScrapDetailList(proEmbryoScrapDetail);
+ ExcelUtil util = new ExcelUtil(ProEmbryoScrapDetail.class);
+ util.exportExcel(response, list, "报废详情数据");
+ }
+
+ /**
+ * 获取报废详情详细信息
+ */
+// @RequiresPermissions("system:detail:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id) {
+ return success(proEmbryoScrapDetailService.selectProEmbryoScrapDetailById(id));
+ }
+
+ /**
+ * 新增报废详情
+ */
+// @RequiresPermissions("system:detail:add")
+ @Log(title = "报废详情", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ProEmbryoScrapDetail proEmbryoScrapDetail) {
+ return toAjax(proEmbryoScrapDetailService.insertProEmbryoScrapDetail(proEmbryoScrapDetail));
+ }
+
+ /**
+ * 修改报废详情
+ */
+// @RequiresPermissions("system:detail:edit")
+ @Log(title = "报废详情", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ProEmbryoScrapDetail proEmbryoScrapDetail) {
+ return toAjax(proEmbryoScrapDetailService.updateProEmbryoScrapDetail(proEmbryoScrapDetail));
+ }
+
+ /**
+ * 删除报废详情
+ */
+// @RequiresPermissions("system:detail:remove")
+ @Log(title = "报废详情", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable String[] ids) {
+ return toAjax(proEmbryoScrapDetailService.deleteProEmbryoScrapDetailByIds(ids));
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrap.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrap.java
new file mode 100644
index 000000000..adeb8f09b
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrap.java
@@ -0,0 +1,220 @@
+package com.op.mes.domain;
+
+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;
+
+/**
+ * 【请填写功能名称】对象 pro_embryo_scrap
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public class ProEmbryoScrap extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /** ID */
+ private String id;
+
+ /** 报废单号 */
+ @Excel(name = "报废单号")
+ private String scrapCode;
+
+ /** 物料ID */
+ @Excel(name = "物料ID")
+ private String materialId;
+
+ /** 物料编码 */
+ @Excel(name = "物料编码")
+ private String materialCode;
+
+ /** 物料名称 */
+ @Excel(name = "物料名称")
+ private String materialName;
+
+ /** 工位ID */
+ @Excel(name = "工位ID")
+ private String workCellId;
+
+ /** 工位编码 */
+ @Excel(name = "工位编码")
+ private String workCellCode;
+
+ /** 工位名称 */
+ @Excel(name = "工位名称")
+ private String workCellName;
+
+ /** 报废数量 */
+ @Excel(name = "报废数量")
+ private Long scrapQuality;
+
+ /** 单位 */
+ @Excel(name = "单位")
+ private String unit;
+
+ /** 状态 */
+ @Excel(name = "状态")
+ private String status;
+
+ /** 预留字段1 */
+ @Excel(name = "预留字段1")
+ private String attr1;
+
+ /** 预留字段2 */
+ @Excel(name = "预留字段2")
+ private String attr2;
+
+ /** 预留字段3 */
+ @Excel(name = "预留字段3")
+ private Long attr3;
+
+ /** 预留字段4 */
+ @Excel(name = "预留字段4")
+ private Long attr4;
+
+ /** 0删除1正常 */
+ @Excel(name = "0删除1正常")
+ private String active;
+
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+ public void setScrapCode(String scrapCode) {
+ this.scrapCode = scrapCode;
+ }
+
+ public String getScrapCode() {
+ return scrapCode;
+ }
+ public void setMaterialId(String materialId) {
+ this.materialId = materialId;
+ }
+
+ public String getMaterialId() {
+ return materialId;
+ }
+ public void setMaterialCode(String materialCode) {
+ this.materialCode = materialCode;
+ }
+
+ public String getMaterialCode() {
+ return materialCode;
+ }
+ public void setMaterialName(String materialName) {
+ this.materialName = materialName;
+ }
+
+ public String getMaterialName() {
+ return materialName;
+ }
+ public void setWorkCellId(String workCellId) {
+ this.workCellId = workCellId;
+ }
+
+ public String getWorkCellId() {
+ return workCellId;
+ }
+ public void setWorkCellCode(String workCellCode) {
+ this.workCellCode = workCellCode;
+ }
+
+ public String getWorkCellCode() {
+ return workCellCode;
+ }
+ public void setWorkCellName(String workCellName) {
+ this.workCellName = workCellName;
+ }
+
+ public String getWorkCellName() {
+ return workCellName;
+ }
+ public void setScrapQuality(Long scrapQuality) {
+ this.scrapQuality = scrapQuality;
+ }
+
+ public Long getScrapQuality() {
+ return scrapQuality;
+ }
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+ 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(Long attr3) {
+ this.attr3 = attr3;
+ }
+
+ public Long getAttr3() {
+ return attr3;
+ }
+ public void setAttr4(Long attr4) {
+ this.attr4 = attr4;
+ }
+
+ public Long getAttr4() {
+ return attr4;
+ }
+ public void setActive(String active) {
+ this.active = active;
+ }
+
+ public String getActive() {
+ return active;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("scrapCode", getScrapCode())
+ .append("materialId", getMaterialId())
+ .append("materialCode", getMaterialCode())
+ .append("materialName", getMaterialName())
+ .append("workCellId", getWorkCellId())
+ .append("workCellCode", getWorkCellCode())
+ .append("workCellName", getWorkCellName())
+ .append("scrapQuality", getScrapQuality())
+ .append("unit", getUnit())
+ .append("status", getStatus())
+ .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("active", getActive())
+ .toString();
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrapDetail.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrapDetail.java
new file mode 100644
index 000000000..795dae8f4
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProEmbryoScrapDetail.java
@@ -0,0 +1,207 @@
+package com.op.mes.domain;
+
+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;
+
+/**
+ * 【请填写功能名称】对象 pro_embryo_scrap_detail
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public class ProEmbryoScrapDetail extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /** ID */
+ private String id;
+
+ /** 报废单号 */
+ @Excel(name = "报废单号")
+ private String scrapCode;
+
+ /** 工单ID */
+ @Excel(name = "工单ID")
+ private String workorderId;
+
+ /** 工单编号 */
+ @Excel(name = "工单编号")
+ private String workorderCode;
+
+ /** 物料ID */
+ @Excel(name = "物料ID")
+ private String materialId;
+
+ /** 物料编码 */
+ @Excel(name = "物料编码")
+ private String materialCode;
+
+ /** 物料名称 */
+ @Excel(name = "物料名称")
+ private String materialName;
+
+ /** 物料报废数量 */
+ @Excel(name = "物料报废数量")
+ private Long scrapQuality;
+
+ /** 单位 */
+ @Excel(name = "单位")
+ private String unit;
+
+ /** 状态 */
+ @Excel(name = "状态")
+ private String status;
+
+ /** 预留字段1 */
+ @Excel(name = "预留字段1")
+ private String attr1;
+
+ /** 预留字段2 */
+ @Excel(name = "预留字段2")
+ private String attr2;
+
+ /** 预留字段3 */
+ @Excel(name = "预留字段3")
+ private Long attr3;
+
+ /** 预留字段4 */
+ @Excel(name = "预留字段4")
+ private Long attr4;
+
+ /** 0删除1正常 */
+ @Excel(name = "0删除1正常")
+ private String active;
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+ public void setScrapCode(String scrapCode) {
+ this.scrapCode = scrapCode;
+ }
+
+ public String getScrapCode() {
+ return scrapCode;
+ }
+ public void setWorkorderId(String workorderId) {
+ this.workorderId = workorderId;
+ }
+
+ public String getWorkorderId() {
+ return workorderId;
+ }
+ public void setWorkorderCode(String workorderCode) {
+ this.workorderCode = workorderCode;
+ }
+
+ public String getWorkorderCode() {
+ return workorderCode;
+ }
+ public void setMaterialId(String materialId) {
+ this.materialId = materialId;
+ }
+
+ public String getMaterialId() {
+ return materialId;
+ }
+ public void setMaterialCode(String materialCode) {
+ this.materialCode = materialCode;
+ }
+
+ public String getMaterialCode() {
+ return materialCode;
+ }
+ public void setMaterialName(String materialName) {
+ this.materialName = materialName;
+ }
+
+ public String getMaterialName() {
+ return materialName;
+ }
+ public void setScrapQuality(Long scrapQuality) {
+ this.scrapQuality = scrapQuality;
+ }
+
+ public Long getScrapQuality() {
+ return scrapQuality;
+ }
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+ 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(Long attr3) {
+ this.attr3 = attr3;
+ }
+
+ public Long getAttr3() {
+ return attr3;
+ }
+ public void setAttr4(Long attr4) {
+ this.attr4 = attr4;
+ }
+
+ public Long getAttr4() {
+ return attr4;
+ }
+ public void setActive(String active) {
+ this.active = active;
+ }
+
+ public String getActive() {
+ return active;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("scrapCode", getScrapCode())
+ .append("workorderId", getWorkorderId())
+ .append("workorderCode", getWorkorderCode())
+ .append("materialId", getMaterialId())
+ .append("materialCode", getMaterialCode())
+ .append("materialName", getMaterialName())
+ .append("scrapQuality", getScrapQuality())
+ .append("unit", getUnit())
+ .append("status", getStatus())
+ .append("remark", getRemark())
+ .append("attr1", getAttr1())
+ .append("attr2", getAttr2())
+ .append("attr3", getAttr3())
+ .append("attr4", getAttr4())
+ .append("active", getActive())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java
new file mode 100644
index 000000000..1bac1e270
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProOrderWorkorder.java
@@ -0,0 +1,474 @@
+package com.op.mes.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.op.common.core.annotation.Excel;
+import com.op.common.core.web.domain.TreeEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 生产工单对象 pro_order_workorder
+ *
+ * @author Open Platform
+ * @date 2023-07-18
+ */
+public class ProOrderWorkorder extends TreeEntity {
+ private static final long serialVersionUID = 1L;
+
+ /** 工单ID */
+ private String workorderId;
+
+ /** 工单编码 */
+ @Excel(name = "工单编码")
+ private String workorderCode;
+
+ /** 工单名称 */
+ @Excel(name = "工单名称")
+ private String workorderName;
+
+ /** 订单id */
+ @Excel(name = "订单id")
+ private String orderId;
+
+ /** 订单编码 */
+ @Excel(name = "订单编码")
+ private String orderCode;
+
+ /** 产品ID */
+ @Excel(name = "产品ID")
+ private String productId;
+
+ /** 产品编号 */
+ @Excel(name = "产品编号")
+ private String productCode;
+
+ /** 产品名称 */
+ @Excel(name = "产品名称")
+ private String productName;
+
+ /** 规格型号 */
+ @Excel(name = "规格型号")
+ private String productSpc;
+
+ /** 单位 */
+ @Excel(name = "单位")
+ private String unit;
+
+ /** 已生产数量 */
+ @Excel(name = "已生产数量")
+ private Long quantityProduced;
+
+ /** 已拆分数量 */
+ @Excel(name = "已拆分数量")
+ private Long quantitySplit;
+
+ /** 工艺编码 */
+ @Excel(name = "工艺编码")
+ private String routeCode;
+
+ /** 产线编码 */
+ @Excel(name = "产线编码")
+ private String prodLineCode;
+
+ /** 工单生产日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "工单生产日期", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date productDate;
+
+ // 工单生产日期开始
+ private String productDateStart;
+
+ // 工单生产日期结束
+ private String productDateEnd;
+ /** 班次 */
+ @Excel(name = "班次")
+ private String shiftId;
+
+ /** 父工单 */
+ @Excel(name = "父工单")
+ private String parentOrder;
+
+ /** 所有父节点ID */
+ @Excel(name = "所有父节点ID")
+ private String ancestors;
+
+ /** 单据状态 */
+ @Excel(name = "单据状态")
+ private String status;
+
+ /** 预留字段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 prodType;
+
+ /** 是否为底层节点 1是 0不是 */
+ @Excel(name = "是否为底层节点")
+ private Integer isEnd;
+
+ /** 班次名称(数据库无该字段,需自行查询) */
+ private String shiftDesc;
+
+ // 料罐id(湿料计划模块使用)
+ private Integer bucketId;
+
+ // 料罐编码(湿料计划模块使用)
+ private String bucketCode;
+
+ // 物料id(湿料计划模块使用)
+ private Integer materialId;
+
+ // 物料编码(湿料计划模块使用)
+ private String materialCode;
+
+ // 物料名称(湿料计划模块使用)
+ private String materialName;
+
+ // 计划日期(湿料计划模块使用)
+ private Date planTime;
+
+ // 料罐名称(湿料计划模块使用)
+ private String bucketName;
+
+ public String getBucketName() {
+ return bucketName;
+ }
+
+ public void setBucketName(String bucketName) {
+ this.bucketName = bucketName;
+ }
+
+ public Integer getBucketId() {
+ return bucketId;
+ }
+
+ public void setBucketId(Integer bucketId) {
+ this.bucketId = bucketId;
+ }
+
+ public String getBucketCode() {
+ return bucketCode;
+ }
+
+ public void setBucketCode(String bucketCode) {
+ this.bucketCode = bucketCode;
+ }
+
+ public Integer getMaterialId() {
+ return materialId;
+ }
+
+ public void setMaterialId(Integer materialId) {
+ this.materialId = materialId;
+ }
+
+ public String getMaterialCode() {
+ return materialCode;
+ }
+
+ public void setMaterialCode(String materialCode) {
+ this.materialCode = materialCode;
+ }
+
+ public String getMaterialName() {
+ return materialName;
+ }
+
+ public void setMaterialName(String materialName) {
+ this.materialName = materialName;
+ }
+
+ public Date getPlanTime() {
+ return planTime;
+ }
+
+ public void setPlanTime(Date planTime) {
+ this.planTime = planTime;
+ }
+
+ public String getShiftDesc() {
+ return shiftDesc;
+ }
+
+ public void setShiftDesc(String shiftDesc) {
+ this.shiftDesc = shiftDesc;
+ }
+
+ public Integer getIsEnd() {
+ return isEnd;
+ }
+
+ public void setIsEnd(Integer isEnd) {
+ this.isEnd = isEnd;
+ }
+
+ /** 批次号 */
+ private List batchCodeList;
+
+ public List getBatchCodeList() {
+ return batchCodeList;
+ }
+
+ public void setBatchCodeList(List batchCodeList) {
+ this.batchCodeList = batchCodeList;
+ }
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private String factoryCode;
+
+ public void setWorkorderId(String workorderId) {
+ this.workorderId = workorderId;
+ }
+
+ public String getWorkorderId() {
+ return workorderId;
+ }
+ public void setWorkorderCode(String workorderCode) {
+ this.workorderCode = workorderCode;
+ }
+
+ public String getWorkorderCode() {
+ return workorderCode;
+ }
+ public void setWorkorderName(String workorderName) {
+ this.workorderName = workorderName;
+ }
+
+ public String getWorkorderName() {
+ return workorderName;
+ }
+ public void setOrderId(String orderId) {
+ this.orderId = orderId;
+ }
+
+ public String getOrderId() {
+ return orderId;
+ }
+ public void setOrderCode(String orderCode) {
+ this.orderCode = orderCode;
+ }
+
+ public String getOrderCode() {
+ return orderCode;
+ }
+ public void setProductId(String productId) {
+ this.productId = productId;
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+ public void setProductCode(String productCode) {
+ this.productCode = productCode;
+ }
+
+ public String getProductCode() {
+ return productCode;
+ }
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+ public void setProductSpc(String productSpc) {
+ this.productSpc = productSpc;
+ }
+
+ public String getProductSpc() {
+ return productSpc;
+ }
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+ public void setQuantityProduced(Long quantityProduced) {
+ this.quantityProduced = quantityProduced;
+ }
+
+ public Long getQuantityProduced() {
+ return quantityProduced;
+ }
+ public void setQuantitySplit(Long quantitySplit) {
+ this.quantitySplit = quantitySplit;
+ }
+
+ public Long getQuantitySplit() {
+ return quantitySplit;
+ }
+ public void setRouteCode(String routeCode) {
+ this.routeCode = routeCode;
+ }
+
+ public String getRouteCode() {
+ return routeCode;
+ }
+ public void setProdLineCode(String prodLineCode) {
+ this.prodLineCode = prodLineCode;
+ }
+
+ public String getProdLineCode() {
+ return prodLineCode;
+ }
+ public void setProductDate(Date productDate) {
+ this.productDate = productDate;
+ }
+
+ public Date getProductDate() {
+ return productDate;
+ }
+ public void setShiftId(String shiftId) {
+ this.shiftId = shiftId;
+ }
+
+ public String getShiftId() {
+ return shiftId;
+ }
+ public void setParentOrder(String parentOrder) {
+ this.parentOrder = parentOrder;
+ }
+
+ public String getParentOrder() {
+ return parentOrder;
+ }
+ public void setAncestors(String ancestors) {
+ this.ancestors = ancestors;
+ }
+
+ public String getAncestors() {
+ return ancestors;
+ }
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+ 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 setProdType(String prodType) {
+ this.prodType = prodType;
+ }
+
+ public String getProdType() {
+ return prodType;
+ }
+ public void setFactoryCode(String factoryCode) {
+ this.factoryCode = factoryCode;
+ }
+
+ public String getFactoryCode() {
+ return factoryCode;
+ }
+
+ public String getProductDateStart() {
+ return productDateStart;
+ }
+
+ public void setProductDateStart(String productDateStart) {
+ this.productDateStart = productDateStart;
+ }
+
+ public String getProductDateEnd() {
+ return productDateEnd;
+ }
+
+ public void setProductDateEnd(String productDateEnd) {
+ this.productDateEnd = productDateEnd;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("workorderId", getWorkorderId())
+ .append("workorderCode", getWorkorderCode())
+ .append("workorderName", getWorkorderName())
+ .append("orderId", getOrderId())
+ .append("orderCode", getOrderCode())
+ .append("productId", getProductId())
+ .append("productCode", getProductCode())
+ .append("productName", getProductName())
+ .append("productSpc", getProductSpc())
+ .append("unit", getUnit())
+ .append("quantityProduced", getQuantityProduced())
+ .append("quantitySplit", getQuantitySplit())
+ .append("routeCode", getRouteCode())
+ .append("prodLineCode", getProdLineCode())
+ .append("productDate", getProductDate())
+ .append("shiftId", getShiftId())
+ .append("parentOrder", getParentOrder())
+ .append("ancestors", getAncestors())
+ .append("status", getStatus())
+ .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("prodType", getProdType())
+ .append("factoryCode", getFactoryCode())
+ .append("batchCodeList",getBatchCodeList())
+ .append("isEnd",getIsEnd())
+ .append("shiftDesc",getShiftDesc())
+ .append("bucketId",getBucketId())
+ .append("bucketCode",getBucketCode())
+ .append("materialId",getMaterialId())
+ .append("materialCode",getMaterialCode())
+ .append("materialName",getMaterialName())
+ .append("planTime",getPlanTime())
+ .append("bucketName",getBucketName())
+ .toString();
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/Product.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/Product.java
new file mode 100644
index 000000000..7b2239adc
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/Product.java
@@ -0,0 +1,48 @@
+package com.op.mes.domain;
+
+// 物料实体类
+
+public class Product {
+ // 物料id
+ private String productId;
+ // 物料code
+ private String productCode;
+ // 物料名称Desc
+ private String productDesc;
+
+ @Override
+ public String toString() {
+ return "Product{" +
+ "productId=" + productId +
+ ", productCode='" + productCode + '\'' +
+ ", productDesc='" + productDesc + '\'' +
+ '}';
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+
+ public void setProductId(String productId) {
+ this.productId = productId;
+ }
+
+ public String getProductCode() {
+ return productCode;
+ }
+
+ public void setProductCode(String productCode) {
+ this.productCode = productCode;
+ }
+
+ public String getProductDesc() {
+ return productDesc;
+ }
+
+ public void setProductDesc(String productDesc) {
+ this.productDesc = productDesc;
+ }
+
+ public Product() {
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/SysPost.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/SysPost.java
new file mode 100644
index 000000000..90d26b7af
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/SysPost.java
@@ -0,0 +1,105 @@
+package com.op.mes.domain;
+
+import com.op.common.core.annotation.Excel;
+import com.op.common.core.annotation.Excel.ColumnType;
+import com.op.common.core.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+/**
+ * 岗位表 sys_post
+ *
+ * @author OP
+ */
+public class SysPost extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /** 岗位序号 */
+ @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC)
+ private Long postId;
+
+ /** 岗位编码 */
+ @Excel(name = "岗位编码")
+ private String postCode;
+
+ /** 岗位名称 */
+ @Excel(name = "岗位名称")
+ private String postName;
+
+ /** 岗位排序 */
+ @Excel(name = "岗位排序")
+ private Integer postSort;
+
+ /** 状态(0正常 1停用) */
+ @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /** 用户是否存在此岗位标识 默认不存在 */
+ private boolean flag = false;
+
+ public Long getPostId() {
+ return postId;
+ }
+
+ public void setPostId(Long postId) {
+ this.postId = postId;
+ }
+
+ @NotBlank(message = "岗位编码不能为空")
+ @Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")
+ public String getPostCode() {
+ return postCode;
+ }
+
+ public void setPostCode(String postCode) {
+ this.postCode = postCode;
+ }
+
+ @NotBlank(message = "岗位名称不能为空")
+ @Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符")
+ public String getPostName() {
+ return postName;
+ }
+
+ public void setPostName(String postName) {
+ this.postName = postName;
+ }
+
+ @NotNull(message = "显示顺序不能为空")
+ public Integer getPostSort() {
+ return postSort;
+ }
+
+ public void setPostSort(Integer postSort) {
+ this.postSort = postSort;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public boolean isFlag() {
+ return flag;
+ }
+
+ public void setFlag(boolean flag) {
+ this.flag = flag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("postId", getPostId())
+ .append("postCode", getPostCode()).append("postName", getPostName()).append("postSort", getPostSort())
+ .append("status", getStatus()).append("createBy", getCreateBy()).append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("remark", getRemark())
+ .toString();
+ }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/ProEmbryoScrapDto.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/ProEmbryoScrapDto.java
new file mode 100644
index 000000000..c36f85ace
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/ProEmbryoScrapDto.java
@@ -0,0 +1,6 @@
+package com.op.mes.domain.dto;
+
+import com.op.mes.domain.ProEmbryoScrap;
+
+public class ProEmbryoScrapDto extends ProEmbryoScrap {
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/ProEmbryoScrapVo.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/ProEmbryoScrapVo.java
new file mode 100644
index 000000000..7f22bcb7d
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/ProEmbryoScrapVo.java
@@ -0,0 +1,6 @@
+package com.op.mes.domain.vo;
+
+import com.op.mes.domain.ProEmbryoScrap;
+
+public class ProEmbryoScrapVo extends ProEmbryoScrap {
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapDetailMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapDetailMapper.java
new file mode 100644
index 000000000..35014acea
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapDetailMapper.java
@@ -0,0 +1,75 @@
+package com.op.mes.mapper;
+
+import java.util.List;
+
+import com.op.mes.domain.ProEmbryoScrapDetail;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public interface ProEmbryoScrapDetailMapper {
+ /**
+ * 查询报废详情
+ *
+ * @param id 报废详情主键
+ * @return 报废详情
+ */
+ public ProEmbryoScrapDetail selectProEmbryoScrapDetailById(String id);
+
+ /**
+ * 查询报废详情列表
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 报废详情集合
+ */
+ public List selectProEmbryoScrapDetailList(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 新增报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ public int insertProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 修改报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ public int updateProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 删除报废详情
+ *
+ * @param id 报废详情主键
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapDetailById(String id);
+
+ /**
+ * 批量删除报废详情
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapDetailByIds(String[] ids);
+
+ /**
+ * 根据工单号查询一个报废单详情对象
+ * @param code
+ * @return
+ */
+ public ProEmbryoScrapDetail selectScrapDetailByCode(String code);
+
+ /**
+ * 根据codes删除详情表中内容
+ * @param codes
+ * @return
+ */
+ public int deleteProEmbryoScrapDetails(String[] codes);
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapMapper.java
new file mode 100644
index 000000000..3e8e44dbe
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProEmbryoScrapMapper.java
@@ -0,0 +1,109 @@
+package com.op.mes.mapper;
+
+import java.util.List;
+
+import com.op.mes.domain.ProEmbryoScrap;
+import com.op.mes.domain.ProOrderWorkorder;
+import com.op.mes.domain.Product;
+import com.op.mes.domain.SysPost;
+
+/**
+ * 报废Mapper接口
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public interface ProEmbryoScrapMapper {
+ /**
+ * 查询报废
+ *
+ * @param id 报废主键
+ * @return 报废
+ */
+ public ProEmbryoScrap selectProEmbryoScrapById(String id);
+
+ /**
+ * 查询报废列表
+ *
+ * @param proEmbryoScrap 报废
+ * @return 报废集合
+ */
+ public List selectProEmbryoScrapList(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 新增报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ public int insertProEmbryoScrap(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 修改报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ public int updateProEmbryoScrap(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 删除报废
+ *
+ * @param id 报废主键
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapById(String id);
+
+ /**
+ * 批量删除报废
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapByIds(String[] ids);
+
+ //查询所有工单
+ public List selectAllWorkorder();
+
+ //自定义查询所有(物料)
+// public List selectProEmbryoScrap();
+
+ //查詢所有物料名称
+ public List showAllMaterial();
+ //查询工位详细信息
+ public List showSysPost();
+
+ /**
+ * 根据id查询物料信息
+ * @param id
+ * @return
+ */
+ public Product selectProductById(String id);
+
+ /**
+ * 根据id查询岗位信息
+ * @param id
+ * @return
+ */
+ public SysPost selectPostById(String id);
+
+ /**
+ * 根据产品的id查工单信息
+ * @param id
+ * @return
+ */
+ public ProOrderWorkorder selectOrderWorkByProductId(String id);
+
+
+
+ /**
+ * 根据报废单的id查询岗位和物料信息
+ * @param id
+ * @return
+ */
+ public ProEmbryoScrap selectPostAndMaterialSelectById(String id);
+
+
+ public List selectManyProEmbryScrap(String[] ids);
+
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapDetailService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapDetailService.java
new file mode 100644
index 000000000..eb0c22a0d
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapDetailService.java
@@ -0,0 +1,69 @@
+package com.op.mes.service;
+
+import java.util.List;
+import com.op.mes.domain.ProEmbryoScrapDetail;
+
+/**
+ * 报废详情Service接口
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public interface IProEmbryoScrapDetailService {
+ /**
+ * 查询报废详情
+ *
+ * @param id 报废详情主键
+ * @return 报废详情
+ */
+ public ProEmbryoScrapDetail selectProEmbryoScrapDetailById(String id);
+
+ /**
+ * 查询报废详情列表
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 报废详情集合
+ */
+ public List selectProEmbryoScrapDetailList(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 新增报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ public int insertProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 修改报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ public int updateProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail);
+
+ /**
+ * 批量删除报废详情
+ *
+ * @param ids 需要删除的报废详情主键集合
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapDetailByIds(String[] ids);
+
+ /**
+ * 删除报废详情信息
+ *
+ * @param id 报废详情主键
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapDetailById(String id);
+
+// /**
+// * 根据一个报废单号查询一个报废单明细对象
+// * @param code
+// * @return
+// */
+// public ProEmbryoScrapDetail selectScrapDetailByCode(String code);
+
+
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapService.java
new file mode 100644
index 000000000..59ff6adb2
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IProEmbryoScrapService.java
@@ -0,0 +1,92 @@
+package com.op.mes.service;
+
+import java.util.List;
+import com.op.mes.domain.ProEmbryoScrap;
+import com.op.mes.domain.ProOrderWorkorder;
+import com.op.mes.domain.Product;
+import com.op.mes.domain.SysPost;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+public interface IProEmbryoScrapService {
+ /**
+ * 查询报废
+ *
+ * @param id 报废主键
+ * @return 报废
+ */
+ public ProEmbryoScrap selectProEmbryoScrapById(String id);
+
+ /**
+ * 查询报废列表
+ *
+ * @param proEmbryoScrap 报废
+ * @return 报废集合
+ */
+ public List selectProEmbryoScrapList(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 新增报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ public int insertProEmbryoScrap(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 修改报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ public int updateProEmbryoScrap(ProEmbryoScrap proEmbryoScrap);
+
+ /**
+ * 批量删除 报废
+ *
+ * @param ids 需要删除的报废主键集合
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapByIds(String[] ids);
+
+ /**
+ * 删除报废信息
+ *
+ * @param id 报废主键
+ * @return 结果
+ */
+ public int deleteProEmbryoScrapById(String id);
+
+ /*
+ * 查询所有(物料)
+ * */
+// public List selectProEmbryoScrap();
+
+ //查詢所有物料名称
+ public List showAllMaterial();
+
+ //查询所有工位信息
+ public List showSysPost();
+
+ //查询所有工单
+ public List selectAllWorkOrder();
+
+ /**
+ * 根据id查询物料
+ * @param id
+ * @return
+ */
+ public Product selectProductById(String id);
+
+ /**
+ * 根据id查询工位信息
+ * @param id
+ * @return
+ */
+ public SysPost selectPostById(String id);
+
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapDetailServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapDetailServiceImpl.java
new file mode 100644
index 000000000..0d39d0523
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapDetailServiceImpl.java
@@ -0,0 +1,117 @@
+package com.op.mes.service.impl;
+
+import java.util.List;
+
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.op.common.core.utils.DateUtils;
+import com.op.common.core.utils.uuid.IdUtils;
+import com.op.mes.domain.ProEmbryoScrap;
+import com.op.mes.domain.ProOrderWorkorder;
+import com.op.mes.mapper.ProEmbryoScrapMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.op.mes.mapper.ProEmbryoScrapDetailMapper;
+import com.op.mes.domain.ProEmbryoScrapDetail;
+import com.op.mes.service.IProEmbryoScrapDetailService;
+
+/**
+ * 报废详情Service业务层处理
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+@Service
+public class ProEmbryoScrapDetailServiceImpl implements IProEmbryoScrapDetailService {
+ @Autowired
+ private ProEmbryoScrapDetailMapper proEmbryoScrapDetailMapper;
+ @Autowired ProEmbryoScrapMapper proEmbryoScrapMapper;
+
+
+
+ /**
+ * 查询报废详情
+ *
+ * @param id 报废详情主键
+ * @return 报废详情
+ */
+ @Override
+ @DS("#header.poolName")
+ public ProEmbryoScrapDetail selectProEmbryoScrapDetailById(String id) {
+ return proEmbryoScrapDetailMapper.selectProEmbryoScrapDetailById(id);
+ }
+
+ /**
+ * 查询报废详情列表
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 报废详情
+ */
+ @Override
+ @DS("#header.poolName")
+ public List selectProEmbryoScrapDetailList(ProEmbryoScrapDetail proEmbryoScrapDetail) {
+
+ return proEmbryoScrapDetailMapper.selectProEmbryoScrapDetailList(proEmbryoScrapDetail);
+ }
+
+ /**
+ * 新增报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int insertProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail) {
+
+ proEmbryoScrapDetail.setCreateTime(DateUtils.getNowDate());
+ return proEmbryoScrapDetailMapper.insertProEmbryoScrapDetail(proEmbryoScrapDetail);
+ }
+
+ /**
+ * 修改报废详情
+ *
+ * @param proEmbryoScrapDetail 报废详情
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int updateProEmbryoScrapDetail(ProEmbryoScrapDetail proEmbryoScrapDetail) {
+ proEmbryoScrapDetail.setUpdateTime(DateUtils.getNowDate());
+ return proEmbryoScrapDetailMapper.updateProEmbryoScrapDetail(proEmbryoScrapDetail);
+ }
+
+ /**
+ * 批量删除报废详情
+ *
+ * @param ids 需要删除的报废详情主键
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int deleteProEmbryoScrapDetailByIds(String[] ids) {
+ return proEmbryoScrapDetailMapper.deleteProEmbryoScrapDetailByIds(ids);
+ }
+
+ /**
+ * 删除报废详情信息
+ *
+ * @param id 报废详情主键
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int deleteProEmbryoScrapDetailById(String id) {
+ return proEmbryoScrapDetailMapper.deleteProEmbryoScrapDetailById(id);
+ }
+
+// /**
+// * 根据一个报废单号查询一个报废单明细对象
+// * @param code
+// * @return
+// */
+// @Override
+// public ProEmbryoScrapDetail selectScrapDetailByCode(String code) {
+// return proEmbryoScrapDetailMapper.selectScrapDetailByCode(code);
+// }
+}
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java
new file mode 100644
index 000000000..661e5e8c5
--- /dev/null
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProEmbryoScrapServiceImpl.java
@@ -0,0 +1,223 @@
+package com.op.mes.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.op.common.core.context.SecurityContextHolder;
+import com.op.common.core.exception.ServiceException;
+import com.op.common.core.utils.DateUtils;
+import com.op.common.core.utils.uuid.IdUtils;
+import com.op.mes.domain.*;
+import com.op.mes.mapper.ProEmbryoScrapDetailMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.op.mes.mapper.ProEmbryoScrapMapper;
+import com.op.mes.service.IProEmbryoScrapService;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import sun.plugin.javascript.navig.Array;
+
+/**
+ * 报废Service业务层处理
+ *
+ * @author Open Platform
+ * @date 2023-08-01
+ */
+@Service
+public class ProEmbryoScrapServiceImpl implements IProEmbryoScrapService {
+ @Autowired
+ private ProEmbryoScrapMapper proEmbryoScrapMapper;
+ @Autowired
+ private ProEmbryoScrapDetailMapper proEmbryoScrapDetailMapper;
+
+ /**
+ * 查询报废
+ *
+ * @param id 报废主键
+ * @return 报废
+ */
+ @Override
+ @DS("#header.poolName")
+ public ProEmbryoScrap selectProEmbryoScrapById(String id) {
+// ProEmbryoScrap proEmbryoScrap = proEmbryoScrapMapper.selectPostAndMaterialSelectById(id);
+
+ return proEmbryoScrapMapper.selectProEmbryoScrapById(id);
+ //proEmbryoScrap;
+ }
+
+ /**
+ * 查询报废列表
+ *
+ * @param proEmbryoScrap 报废
+ * @return 报废
+ */
+ @Override
+ @DS("#header.poolName")
+ public List selectProEmbryoScrapList(ProEmbryoScrap proEmbryoScrap) {
+ return proEmbryoScrapMapper.selectProEmbryoScrapList(proEmbryoScrap);
+ }
+
+ /**
+ * 新增报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ @Transactional(rollbackFor = Exception.class)
+ public int insertProEmbryoScrap(ProEmbryoScrap proEmbryoScrap) {
+ proEmbryoScrap.setId(IdUtils.fastSimpleUUID());
+ proEmbryoScrap.setCreateBy(SecurityContextHolder.getUserName());
+ proEmbryoScrap.setUpdateBy(SecurityContextHolder.getUserName());
+ proEmbryoScrap.setUpdateTime(DateUtils.getNowDate());
+ proEmbryoScrap.setCreateTime(DateUtils.getNowDate());
+ //报废表添加数据-添加物料信息
+ Product product = proEmbryoScrapMapper.selectProductById(proEmbryoScrap.getMaterialId());
+ proEmbryoScrap.setMaterialName(product.getProductDesc());
+ proEmbryoScrap.setMaterialCode(product.getProductCode());
+ /**
+ * 报废表添加数据-添加工单信息
+ */
+ SysPost sysPost = proEmbryoScrapMapper.selectPostById(proEmbryoScrap.getWorkCellId());
+ proEmbryoScrap.setWorkCellCode(sysPost.getPostCode());
+ proEmbryoScrap.setWorkCellName(sysPost.getPostName());
+ proEmbryoScrapMapper.insertProEmbryoScrap(proEmbryoScrap);
+ //todo 向详情表添加一条数据
+ ProEmbryoScrapDetail proEmbryoScrapDetail = new ProEmbryoScrapDetail();
+ proEmbryoScrapDetail.setId(IdUtils.fastSimpleUUID());
+ proEmbryoScrapDetail.setScrapCode(proEmbryoScrap.getScrapCode());
+ proEmbryoScrapDetail.setMaterialId(proEmbryoScrap.getMaterialId());
+ proEmbryoScrapDetail.setMaterialCode(proEmbryoScrap.getMaterialCode());
+ proEmbryoScrapDetail.setMaterialName(proEmbryoScrap.getMaterialName());
+ // todo 根据产品的id查工单的信息
+ ProOrderWorkorder proOrderWorkorder = proEmbryoScrapMapper.selectOrderWorkByProductId(proEmbryoScrap.getMaterialId());
+ if (ObjectUtils.isEmpty(proOrderWorkorder)) {
+ throw new ServiceException("该物料下没有对应的工单!");
+ }
+ proEmbryoScrapDetail.setWorkorderId(proOrderWorkorder.getWorkorderId());
+ proEmbryoScrapDetail.setWorkorderCode(proOrderWorkorder.getWorkorderCode());
+ proEmbryoScrapDetail.setScrapQuality(proEmbryoScrap.getScrapQuality());
+ proEmbryoScrapDetail.setUnit(proEmbryoScrap.getUnit());
+ proEmbryoScrapDetail.setStatus(proEmbryoScrap.getStatus());
+ proEmbryoScrapDetail.setCreateTime(proEmbryoScrap.getCreateTime());
+ proEmbryoScrapDetail.setUpdateTime(proEmbryoScrap.getUpdateTime());
+ proEmbryoScrapDetail.setCreateBy(proEmbryoScrap.getCreateBy());
+ proEmbryoScrapDetail.setUpdateBy(proEmbryoScrap.getUpdateBy());
+ // todo 向详情表中添加
+ return proEmbryoScrapDetailMapper.insertProEmbryoScrapDetail(proEmbryoScrapDetail);
+ }
+
+ /**
+ * 修改报废
+ *
+ * @param proEmbryoScrap 报废
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int updateProEmbryoScrap(ProEmbryoScrap proEmbryoScrap) {
+
+ ProEmbryoScrapDetail proEmbryoScrapDetail = proEmbryoScrapDetailMapper.selectScrapDetailByCode(proEmbryoScrap.getScrapCode());
+ if (!ObjectUtils.isEmpty(proEmbryoScrapDetail)) {
+ proEmbryoScrapDetail.setScrapCode(proEmbryoScrap.getScrapCode());
+ proEmbryoScrapDetail.setMaterialId(proEmbryoScrap.getMaterialId());
+ proEmbryoScrapDetail.setMaterialCode(proEmbryoScrap.getMaterialCode());
+ proEmbryoScrapDetail.setMaterialName(proEmbryoScrap.getMaterialName());
+ proEmbryoScrapDetail.setScrapQuality(proEmbryoScrap.getScrapQuality());
+ proEmbryoScrapDetail.setStatus(proEmbryoScrap.getStatus());
+ proEmbryoScrapDetail.setUnit(proEmbryoScrap.getUnit());
+ proEmbryoScrap.setUpdateTime(DateUtils.getNowDate());
+ proEmbryoScrapDetail.setUpdateTime(DateUtils.getNowDate());
+ }
+ proEmbryoScrapMapper.updateProEmbryoScrap(proEmbryoScrap);
+
+ return proEmbryoScrapDetailMapper.updateProEmbryoScrapDetail(proEmbryoScrapDetail);
+ }
+
+ /**
+ * 批量删除报废
+ *
+ * @param ids 需要删除的报废主键
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int deleteProEmbryoScrapByIds(String[] ids) {
+ ArrayList strings = new ArrayList<>();
+
+ List proEmbryoScraps = proEmbryoScrapMapper.selectManyProEmbryScrap(ids);
+ for (ProEmbryoScrap proEmbryoScrap : proEmbryoScraps) {
+ strings.add(proEmbryoScrap.getScrapCode());
+ }
+ String[] codes= strings.toArray(new String[0]);
+ proEmbryoScrapDetailMapper.deleteProEmbryoScrapDetails(codes);
+ return proEmbryoScrapMapper.deleteProEmbryoScrapByIds(ids);
+ }
+
+ /**
+ * 删除报废信息
+ *
+ * @param id 报废主键
+ * @return 结果
+ */
+ @Override
+ @DS("#header.poolName")
+ public int deleteProEmbryoScrapById(String id) {
+ return proEmbryoScrapMapper.deleteProEmbryoScrapById(id);
+ }
+
+// @Override
+// public List selectProEmbryoScrap() {
+// return proEmbryoScrapMapper.selectProEmbryoScrap();
+// }
+
+ //查询所有物料名称
+ @Override
+ @DS("#header.poolName")
+ public List showAllMaterial() {
+ return proEmbryoScrapMapper.showAllMaterial();
+ }
+
+ //查询工位信息
+ @Override
+ @DS("#header.poolName")
+ public List showSysPost() {
+ return proEmbryoScrapMapper.showSysPost();
+ }
+
+ /**
+ * 查询工单信息
+ * @return
+ */
+ @Override
+ @DS("#header.poolName")
+ public List selectAllWorkOrder() {
+ return proEmbryoScrapMapper.selectAllWorkorder();
+ }
+
+ /**
+ * 根据Id查询物料信息
+ * @param id
+ * @return
+ */
+ @Override
+ @DS("#header.poolName")
+ public Product selectProductById(String id) {
+ return proEmbryoScrapMapper.selectProductById(id);
+ }
+
+ /**
+ * 根据id查询工位信息
+ * @param id
+ * @return
+ */
+ @Override
+ @DS("#header.poolName")
+ public SysPost selectPostById(String id) {
+ return proEmbryoScrapMapper.selectPostById(id);
+ }
+
+
+}
diff --git a/op-modules/op-mes/src/main/resources/bootstrap.yml b/op-modules/op-mes/src/main/resources/bootstrap.yml
index 44e0b2783..40cd81a8c 100644
--- a/op-modules/op-mes/src/main/resources/bootstrap.yml
+++ b/op-modules/op-mes/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ spring:
nacos:
discovery:
namespace: lanju-op
- group: zxl
+ group: chj
# 服务注册地址
server-addr: 140.249.53.142:8848
config:
namespace: lanju-op
- group: zxl
+ group: chj
#命名空间
#group: local
# 配置中心地址
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapDetailMapper.xml
new file mode 100644
index 000000000..ca8ea9dc0
--- /dev/null
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapDetailMapper.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, scrap_code, workorder_id, workorder_code, material__id, material_code, material_name, scrap_quality, unit, status, remark, attr1, attr2, attr3, attr4, active, create_by, create_time, update_by, update_time from pro_embryo_scrap_detail
+
+
+
+
+
+
+
+
+
+ insert into pro_embryo_scrap_detail
+
+ id,
+ scrap_code,
+ workorder_id,
+ workorder_code,
+ material__id,
+ material_code,
+ material_name,
+ scrap_quality,
+ unit,
+ status,
+ remark,
+ attr1,
+ attr2,
+ attr3,
+ attr4,
+ active,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{id},
+ #{scrapCode},
+ #{workorderId},
+ #{workorderCode},
+ #{materialId},
+ #{materialCode},
+ #{materialName},
+ #{scrapQuality},
+ #{unit},
+ #{status},
+ #{remark},
+ #{attr1},
+ #{attr2},
+ #{attr3},
+ #{attr4},
+ #{active},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update pro_embryo_scrap_detail
+
+ scrap_code = #{scrapCode},
+ workorder_id = #{workorderId},
+ workorder_code = #{workorderCode},
+ material__id = #{materialId},
+ material_code = #{materialCode},
+ material_name = #{materialName},
+ scrap_quality = #{scrapQuality},
+ unit = #{unit},
+ status = #{status},
+ remark = #{remark},
+ attr1 = #{attr1},
+ attr2 = #{attr2},
+ attr3 = #{attr3},
+ attr4 = #{attr4},
+ active = #{active},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where id = #{id}
+
+
+
+ delete from pro_embryo_scrap_detail where id = #{id}
+
+
+
+ delete from pro_embryo_scrap_detail where id in
+
+ #{id}
+
+
+
+ delete from pro_embryo_scrap_detail where scrap_code in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapMapper.xml
new file mode 100644
index 000000000..9fd8096d5
--- /dev/null
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/ProEmbryoScrapMapper.xml
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, scrap_code, material__id, material_code, material_name,
+ work_cell_id, work_cell_code, work_cell_name, scrap_quality,
+ unit, status, remark, attr1, attr2, attr3, attr4, create_by,
+ create_time, update_by, update_time, active from pro_embryo_scrap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into pro_embryo_scrap
+
+ id,
+ scrap_code,
+ material__id,
+ material_code,
+ material_name,
+ work_cell_id,
+ work_cell_code,
+ work_cell_name,
+ scrap_quality,
+ unit,
+ status,
+ remark,
+ attr1,
+ attr2,
+ attr3,
+ attr4,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ active,
+
+
+ #{id},
+ #{scrapCode},
+ #{materialId},
+ #{materialCode},
+ #{materialName},
+ #{workCellId},
+ #{workCellCode},
+ #{workCellName},
+ #{scrapQuality},
+ #{unit},
+ #{status},
+ #{remark},
+ #{attr1},
+ #{attr2},
+ #{attr3},
+ #{attr4},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+ #{active},
+
+
+
+
+ update pro_embryo_scrap
+
+ scrap_code = #{scrapCode},
+ material__id = #{materialId},
+ material_code = #{materialCode},
+ material_name = #{materialName},
+ work_cell_id = #{workCellId},
+ work_cell_code = #{workCellCode},
+ work_cell_name = #{workCellName},
+ scrap_quality = #{scrapQuality},
+ unit = #{unit},
+ status = #{status},
+ remark = #{remark},
+ attr1 = #{attr1},
+ attr2 = #{attr2},
+ attr3 = #{attr3},
+ attr4 = #{attr4},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+ active = #{active},
+
+ where id = #{id}
+
+
+
+ delete from pro_embryo_scrap where id = #{id}
+
+
+
+ delete from pro_embryo_scrap where id in
+
+ #{id}
+
+
+
\ No newline at end of file