diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java b/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java index 3a8f7782..81d7b51f 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/constant/Constants.java @@ -147,4 +147,10 @@ public class Constants { //领料 public static final Integer LL=261; + + //来料检验不合格控制流程workflowId + + public static final Integer WORKFLOWID=26235; + + //过程检验不合格控制流程workflowId } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java new file mode 100644 index 00000000..8c257d56 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesBoardController.java @@ -0,0 +1,28 @@ +package com.op.mes.controller; + + +import com.op.common.core.web.domain.AjaxResult; + +import com.op.mes.service.IMesBoradService; +import com.op.system.api.domain.dto.BoardDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/mesborad") +public class MesBoardController { + + @Autowired + private IMesBoradService iMesBoradService; + /** + * 成品包装线看板 + */ + @PostMapping("/finishProductBoard") + public AjaxResult finishProductBoard(@RequestBody BoardDTO boardDTO){ + return iMesBoradService.finishProductBoard(boardDTO); + } + +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java index 7e8730b0..71e552ab 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java @@ -5,6 +5,7 @@ import com.op.mes.service.MesInterfaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,4 +27,5 @@ public class MesInterfaceController { public List getTechnologyBoard(@RequestBody MesBoard mesBoard) { return mesInterfaceService.getTechnologyBoard(mesBoard); } + } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesUnitPriceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesUnitPriceController.java new file mode 100644 index 00000000..85374e65 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesUnitPriceController.java @@ -0,0 +1,105 @@ +package com.op.mes.controller; + +import java.io.IOException; +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.op.mes.domain.MesUnitPrice; +import com.op.mes.service.IMesUnitPriceService; +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; + +/** + * unitPriceController + * + * @author Open Platform + * @date 2023-12-26 + */ +@RestController +@RequestMapping("/unitPrice") +public class MesUnitPriceController extends BaseController { + @Autowired + private IMesUnitPriceService mesUnitPriceService; + + /** + * 查询unitPrice列表 + */ + @RequiresPermissions("system:unitPrice:list") + @GetMapping("/list") + public TableDataInfo list(MesUnitPrice mesUnitPrice) { + startPage(); + List list = mesUnitPriceService.selectMesUnitPriceList(mesUnitPrice); + return getDataTable(list); + } + + /** + * 导出unitPrice列表 + */ + @RequiresPermissions("system:unitPrice:export") + @Log(title = "unitPrice", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, MesUnitPrice mesUnitPrice) { + List list = mesUnitPriceService.selectMesUnitPriceList(mesUnitPrice); + ExcelUtil util = new ExcelUtil(MesUnitPrice.class); + util.exportExcel(response, list, "unitPrice数据"); + } + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) throws IOException { + ExcelUtil util = new ExcelUtil(MesUnitPrice.class); + util.importTemplateExcel(response, "产品单价导入模板"); + } + + /** + * 获取unitPrice详细信息 + */ + @RequiresPermissions("system:unitPrice:query") + @GetMapping(value = "/{picId}") + public AjaxResult getInfo(@PathVariable("picId") String picId) { + return success(mesUnitPriceService.selectMesUnitPriceByPicId(picId)); + } + + /** + * 新增unitPrice + */ + @RequiresPermissions("system:unitPrice:add") + @Log(title = "unitPrice", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody MesUnitPrice mesUnitPrice) { + return toAjax(mesUnitPriceService.insertMesUnitPrice(mesUnitPrice)); + } + + /** + * 修改unitPrice + */ + @RequiresPermissions("system:unitPrice:edit") + @Log(title = "unitPrice", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody MesUnitPrice mesUnitPrice) { + return toAjax(mesUnitPriceService.updateMesUnitPrice(mesUnitPrice)); + } + + /** + * 删除unitPrice + */ + @RequiresPermissions("system:unitPrice:remove") + @Log(title = "unitPrice", businessType = BusinessType.DELETE) + @DeleteMapping("/{picIds}") + public AjaxResult remove(@PathVariable String[] picIds) { + return toAjax(mesUnitPriceService.deleteMesUnitPriceByPicIds(picIds)); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/ProProcessChildController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProProcessChildController.java new file mode 100644 index 00000000..48ac5475 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/ProProcessChildController.java @@ -0,0 +1,125 @@ +package com.op.mes.controller; + +import java.io.IOException; +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.op.common.security.utils.SecurityUtils; +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.ProProcessChild; +import com.op.mes.service.IProProcessChildService; +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; +import org.springframework.web.multipart.MultipartFile; + +/** + * unitpriceController + * + * @author Open Platform + * @date 2023-12-19 + */ +@RestController +@RequestMapping("/childprocess") +public class ProProcessChildController extends BaseController { + @Autowired + private IProProcessChildService proProcessChildService; + + /** + * 查询childprocess列表 + */ + @RequiresPermissions("mes:childprocess:list") + @GetMapping("/list") + public TableDataInfo list(ProProcessChild proProcessChild) { + startPage(); + List list = proProcessChildService.selectProProcessChildList(proProcessChild); + return getDataTable(list); + } + @RequiresPermissions("mes:childprocess:listall") + @GetMapping("/listall") + public List listall(ProProcessChild proProcessChild) { + List list = proProcessChildService.selectProProcessChildList(proProcessChild); + return list; + } + /** + * 导出unitprice列表 + */ + @RequiresPermissions("mes:childprocess:export") + @Log(title = "childprocess", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ProProcessChild proProcessChild) { + List list = proProcessChildService.selectProProcessChildList(proProcessChild); + ExcelUtil util = new ExcelUtil(ProProcessChild.class); + util.exportExcel(response, list, "unitprice数据"); + } + + + @Log(title = "子工序管理", businessType = BusinessType.IMPORT) + @RequiresPermissions("mes:childprocess:import") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil(ProProcessChild.class); + List proProcessChildList = util.importExcel(file.getInputStream()); + String operName = SecurityUtils.getUsername(); + String message = proProcessChildService.importProcessChild(proProcessChildList, updateSupport, operName); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) throws IOException { + ExcelUtil util = new ExcelUtil(ProProcessChild.class); + util.importTemplateExcel(response, "子工序数据"); + } + + /** + * 获取unitprice详细信息 + */ + @RequiresPermissions("mes:childprocess:query") + @GetMapping(value = "/{childprocessId}") + public AjaxResult getInfo(@PathVariable("childprocessId") String childprocessId) { + return success(proProcessChildService.selectProProcessChildByChildprocessId(childprocessId)); + } + + /** + * 新增unitprice + */ + @RequiresPermissions("mes:unitprice:add") + @Log(title = "unitprice", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ProProcessChild proProcessChild) { + return toAjax(proProcessChildService.insertProProcessChild(proProcessChild)); + } + + /** + * 修改unitprice + */ + @RequiresPermissions("mes:childprocess:edit") + @Log(title = "childprocess", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ProProcessChild proProcessChild) { + return toAjax(proProcessChildService.updateProProcessChild(proProcessChild)); + } + + /** + * 删除unitprice + */ + @RequiresPermissions("mes:unitprice:remove") + @Log(title = "childprocess", businessType = BusinessType.DELETE) + @DeleteMapping("/{childprocessIds}") + public AjaxResult remove(@PathVariable String[] childprocessIds) { + return toAjax(proProcessChildService.deleteProProcessChildByChildprocessIds(childprocessIds)); + } + +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java new file mode 100644 index 00000000..eb80809f --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java @@ -0,0 +1,182 @@ +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; + +/** + * ${subTable.functionName}对象 mes_unit_price + * + * @author Open Platform + * @date 2023-12-19 + */ +public class MesUnitPrice extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 单价表主键 */ + private String picId; + + /** 工厂 */ + @Excel(name = "工厂") + private Integer factoryId; + + /** 物料码 */ + @Excel(name = "产品编码") + private String productCode; + + /** 物料描述 */ + @Excel(name = "产品名称") + private String productName; + + /** 产线编码 */ + @Excel(name = "产线编码") + private String lineCode; + + /** 产线名称 */ + @Excel(name = "产线名称") + private String lineName; + + /** 子工序主键 */ +// @Excel(name = "子工序主键") + private String childprocessId; + + /** 子工序编码 */ + @Excel(name = "子工序编码") + private String childprocessCode; + + /** 子工序名称 */ + @Excel(name = "子工序名称") + private String childprocessName; + + /** 预留字段1 */ + @Excel(name = "工序单价(元/pc)") + private String attr1; + + /** 预留字段2 */ +// @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ +// @Excel(name = "预留字段3") + private Long attr3; + + /** 预留字段4 */ +// @Excel(name = "预留字段4") + private Long attr4; + + public void setPicId(String picId) { + this.picId = picId; + } + + public String getPicId() { + return picId; + } + public void setFactoryId(Integer factoryId) { + this.factoryId = factoryId; + } + + public Integer getFactoryId() { + return factoryId; + } + 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 setLineCode(String lineCode) { + this.lineCode = lineCode; + } + + public String getLineCode() { + return lineCode; + } + public void setLineName(String lineName) { + this.lineName = lineName; + } + + public String getLineName() { + return lineName; + } + public void setChildprocessId(String childprocessId) { + this.childprocessId = childprocessId; + } + + public String getChildprocessId() { + return childprocessId; + } + public void setChildprocessCode(String childprocessCode) { + this.childprocessCode = childprocessCode; + } + + public String getChildprocessCode() { + return childprocessCode; + } + public void setChildprocessName(String childprocessName) { + this.childprocessName = childprocessName; + } + + public String getChildprocessName() { + return childprocessName; + } + 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; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("picId", getPicId()) + .append("factoryId", getFactoryId()) + .append("productCode", getProductCode()) + .append("productName", getProductName()) + .append("lineCode", getLineCode()) + .append("lineName", getLineName()) + .append("childprocessId", getChildprocessId()) + .append("childprocessCode", getChildprocessCode()) + .append("childprocessName", getChildprocessName()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .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/ProProcessChild.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProProcessChild.java new file mode 100644 index 00000000..a2510629 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/ProProcessChild.java @@ -0,0 +1,135 @@ +package com.op.mes.domain; + +import java.util.List; +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; + +/** + * unitprice对象 pro_process_child + * + * @author Open Platform + * @date 2023-12-19 + */ +public class ProProcessChild extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 子工序id */ + private String childprocessId; + + /** 工厂 */ + @Excel(name = "工厂") + private String factoryId; + + /** 子工序编码 */ + @Excel(name = "子工序编码") + private String childprocessCode; + + /** 子工序名称 */ + @Excel(name = "子工序名称") + private String childprocessName; + + /** 预留字段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; + + /** $table.subTable.functionName信息 */ + private List mesUnitPriceList; + + public void setChildprocessId(String childprocessId) { + this.childprocessId = childprocessId; + } + + public String getChildprocessId() { + return childprocessId; + } + public void setFactoryId(String factoryId) { + this.factoryId = factoryId; + } + + public String getFactoryId() { + return factoryId; + } + public void setChildprocessCode(String childprocessCode) { + this.childprocessCode = childprocessCode; + } + + public String getChildprocessCode() { + return childprocessCode; + } + public void setChildprocessName(String childprocessName) { + this.childprocessName = childprocessName; + } + + public String getChildprocessName() { + return childprocessName; + } + 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 List getMesUnitPriceList() { + return mesUnitPriceList; + } + + public void setMesUnitPriceList(List mesUnitPriceList) { + this.mesUnitPriceList = mesUnitPriceList; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("childprocessId", getChildprocessId()) + .append("factoryId", getFactoryId()) + .append("childprocessCode", getChildprocessCode()) + .append("childprocessName", getChildprocessName()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("mesUnitPriceList", getMesUnitPriceList()) + .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 66e52079..48d20592 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 @@ -64,4 +64,12 @@ public interface MesMapper { List getTechnologyBoard(MesBoard mesBoard); List getTechnologyFiles(MesBoard dto); + + String sumPlanQuantity(); + + String sumFinshQuantity(); + + List> daySenvenProduction(); + + List> ProductionInProgress(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesUnitPriceMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesUnitPriceMapper.java new file mode 100644 index 00000000..1d08ed5f --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesUnitPriceMapper.java @@ -0,0 +1,63 @@ +package com.op.mes.mapper; + +import com.op.mes.domain.MesUnitPrice; + +import java.util.List; + + + +/** + * unitPriceMapper接口 + * + * @author Open Platform + * @date 2023-12-26 + */ +public interface MesUnitPriceMapper { + /** + * 查询unitPrice + * + * @param picId unitPrice主键 + * @return unitPrice + */ + public MesUnitPrice selectMesUnitPriceByPicId(String picId); + + /** + * 查询unitPrice列表 + * + * @param mesUnitPrice unitPrice + * @return unitPrice集合 + */ + public List selectMesUnitPriceList(MesUnitPrice mesUnitPrice); + + /** + * 新增unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + public int insertMesUnitPrice(MesUnitPrice mesUnitPrice); + + /** + * 修改unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + public int updateMesUnitPrice(MesUnitPrice mesUnitPrice); + + /** + * 删除unitPrice + * + * @param picId unitPrice主键 + * @return 结果 + */ + public int deleteMesUnitPriceByPicId(String picId); + + /** + * 批量删除unitPrice + * + * @param picIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesUnitPriceByPicIds(String[] picIds); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProProcessChildMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProProcessChildMapper.java new file mode 100644 index 00000000..4eaee706 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/ProProcessChildMapper.java @@ -0,0 +1,89 @@ +package com.op.mes.mapper; + +import java.util.List; + +import com.op.mes.domain.ProProcessChild; +import com.op.mes.domain.MesUnitPrice; + +/** + * unitpriceMapper接口 + * + * @author Open Platform + * @date 2023-12-19 + */ +public interface ProProcessChildMapper { + /** + * 查询unitprice + * + * @param childprocessId unitprice主键 + * @return unitprice + */ + public ProProcessChild selectProProcessChildByChildprocessId(String childprocessId); + + /** + * 查询unitprice列表 + * + * @param proProcessChild unitprice + * @return unitprice集合 + */ + public List selectProProcessChildList(ProProcessChild proProcessChild); + + /** + * 新增unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + public int insertProProcessChild(ProProcessChild proProcessChild); + + /** + * 修改unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + public int updateProProcessChild(ProProcessChild proProcessChild); + + /** + * 删除unitprice + * + * @param childprocessId unitprice主键 + * @return 结果 + */ + public int deleteProProcessChildByChildprocessId(String childprocessId); + + /** + * 批量删除unitprice + * + * @param childprocessIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProProcessChildByChildprocessIds(String[] childprocessIds); + + /** + * 批量删除${subTable.functionName} + * + * @param childprocessIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesUnitPriceByChildprocessIds(String[] childprocessIds); + + /** + * 批量新增${subTable.functionName} + * + * @param mesUnitPriceList ${subTable.functionName}列表 + * @return 结果 + */ + public int batchMesUnitPrice(List mesUnitPriceList); + + + /** + * 通过unitprice主键删除${subTable.functionName}信息 + * + * @param childprocessId unitpriceID + * @return 结果 + */ + public int deleteMesUnitPriceByChildprocessId(String childprocessId); + + ProProcessChild selectProcessChildByCode(String childprocessCode); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java new file mode 100644 index 00000000..dc5ea48c --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesBoradService.java @@ -0,0 +1,8 @@ +package com.op.mes.service; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.system.api.domain.dto.BoardDTO; + +public interface IMesBoradService { + public AjaxResult finishProductBoard(BoardDTO boardDTO); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesUnitPriceService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesUnitPriceService.java new file mode 100644 index 00000000..be6a7036 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesUnitPriceService.java @@ -0,0 +1,62 @@ +package com.op.mes.service; + +import com.op.mes.domain.MesUnitPrice; + +import java.util.List; + + +/** + * unitPriceService接口 + * + * @author Open Platform + * @date 2023-12-26 + */ +public interface IMesUnitPriceService { + /** + * 查询unitPrice + * + * @param picId unitPrice主键 + * @return unitPrice + */ + public MesUnitPrice selectMesUnitPriceByPicId(String picId); + + /** + * 查询unitPrice列表 + * + * @param mesUnitPrice unitPrice + * @return unitPrice集合 + */ + public List selectMesUnitPriceList(MesUnitPrice mesUnitPrice); + + /** + * 新增unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + public int insertMesUnitPrice(MesUnitPrice mesUnitPrice); + + /** + * 修改unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + public int updateMesUnitPrice(MesUnitPrice mesUnitPrice); + + /** + * 批量删除unitPrice + * + * @param picIds 需要删除的unitPrice主键集合 + * @return 结果 + */ + public int deleteMesUnitPriceByPicIds(String[] picIds); + + /** + * 删除unitPrice信息 + * + * @param picId unitPrice主键 + * @return 结果 + */ + public int deleteMesUnitPriceByPicId(String picId); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IProProcessChildService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IProProcessChildService.java new file mode 100644 index 00000000..97a2bc4c --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IProProcessChildService.java @@ -0,0 +1,62 @@ +package com.op.mes.service; + +import java.util.List; +import com.op.mes.domain.ProProcessChild; + +/** + * unitpriceService接口 + * + * @author Open Platform + * @date 2023-12-19 + */ +public interface IProProcessChildService { + /** + * 查询unitprice + * + * @param childprocessId unitprice主键 + * @return unitprice + */ + public ProProcessChild selectProProcessChildByChildprocessId(String childprocessId); + + /** + * 查询unitprice列表 + * + * @param proProcessChild unitprice + * @return unitprice集合 + */ + public List selectProProcessChildList(ProProcessChild proProcessChild); + + /** + * 新增unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + public int insertProProcessChild(ProProcessChild proProcessChild); + + /** + * 修改unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + public int updateProProcessChild(ProProcessChild proProcessChild); + + /** + * 批量删除unitprice + * + * @param childprocessIds 需要删除的unitprice主键集合 + * @return 结果 + */ + public int deleteProProcessChildByChildprocessIds(String[] childprocessIds); + + /** + * 删除unitprice信息 + * + * @param childprocessId unitprice主键 + * @return 结果 + */ + public int deleteProProcessChildByChildprocessId(String childprocessId); + + String importProcessChild(List proProcessChildList, boolean updateSupport, String operName); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java new file mode 100644 index 00000000..f93065ae --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesBoradServiceImpl.java @@ -0,0 +1,37 @@ +package com.op.mes.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.web.domain.AjaxResult; +import com.op.mes.mapper.MesMapper; +import com.op.mes.service.IMesBoradService; +import com.op.system.api.domain.dto.BoardDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class MesBoradServiceImpl implements IMesBoradService { + + @Autowired + private MesMapper mesMapper; + + @Override + public AjaxResult finishProductBoard(BoardDTO boardDTO) { + DynamicDataSourceContextHolder.push("ds_"+boardDTO.getFactory());// 这是数据源的key + Map map=new HashMap(); + //当日成品计划数量 + String sumplanquantity=mesMapper.sumPlanQuantity(); + String sumFinshQuantity=mesMapper.sumFinshQuantity(); + List> daySenvenProductionList= mesMapper.daySenvenProduction(); + List> ProductionInProgress=mesMapper.ProductionInProgress(); + map.put("sumplanquantity",sumplanquantity); + map.put("sumFinshQuantity",sumFinshQuantity); + map.put("daySenvenProductionList",daySenvenProductionList); + map.put("ProductionInProgress",ProductionInProgress); + return AjaxResult.success(map); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesUnitPriceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesUnitPriceServiceImpl.java new file mode 100644 index 00000000..a32b224f --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesUnitPriceServiceImpl.java @@ -0,0 +1,93 @@ +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.mes.domain.MesUnitPrice; +import com.op.mes.mapper.MesUnitPriceMapper; +import com.op.mes.service.IMesUnitPriceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * unitPriceService业务层处理 + * + * @author Open Platform + * @date 2023-12-26 + */ +@Service +public class MesUnitPriceServiceImpl implements IMesUnitPriceService { + @Autowired + private MesUnitPriceMapper mesUnitPriceMapper; + + /** + * 查询unitPrice + * + * @param picId unitPrice主键 + * @return unitPrice + */ + @Override + public MesUnitPrice selectMesUnitPriceByPicId(String picId) { + return mesUnitPriceMapper.selectMesUnitPriceByPicId(picId); + } + + /** + * 查询unitPrice列表 + * + * @param mesUnitPrice unitPrice + * @return unitPrice + */ + @Override + @DS("#header.poolName") + public List selectMesUnitPriceList(MesUnitPrice mesUnitPrice) { + return mesUnitPriceMapper.selectMesUnitPriceList(mesUnitPrice); + } + + /** + * 新增unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + @Override + public int insertMesUnitPrice(MesUnitPrice mesUnitPrice) { + mesUnitPrice.setCreateTime(DateUtils.getNowDate()); + return mesUnitPriceMapper.insertMesUnitPrice(mesUnitPrice); + } + + /** + * 修改unitPrice + * + * @param mesUnitPrice unitPrice + * @return 结果 + */ + @Override + public int updateMesUnitPrice(MesUnitPrice mesUnitPrice) { + mesUnitPrice.setUpdateTime(DateUtils.getNowDate()); + return mesUnitPriceMapper.updateMesUnitPrice(mesUnitPrice); + } + + /** + * 批量删除unitPrice + * + * @param picIds 需要删除的unitPrice主键 + * @return 结果 + */ + @Override + public int deleteMesUnitPriceByPicIds(String[] picIds) { + return mesUnitPriceMapper.deleteMesUnitPriceByPicIds(picIds); + } + + /** + * 删除unitPrice信息 + * + * @param picId unitPrice主键 + * @return 结果 + */ + @Override + public int deleteMesUnitPriceByPicId(String picId) { + return mesUnitPriceMapper.deleteMesUnitPriceByPicId(picId); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProProcessChildServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProProcessChildServiceImpl.java new file mode 100644 index 00000000..d87735da --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/ProProcessChildServiceImpl.java @@ -0,0 +1,189 @@ +package com.op.mes.service.impl; + +import java.util.List; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.exception.ServiceException; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.bean.BeanValidators; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.utils.uuid.UUID; +import com.op.common.security.utils.SecurityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.ArrayList; +import com.op.common.core.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import com.op.mes.domain.MesUnitPrice; +import com.op.mes.mapper.ProProcessChildMapper; +import com.op.mes.domain.ProProcessChild; +import com.op.mes.service.IProProcessChildService; + +import javax.validation.Validator; + +/** + * unitpriceService业务层处理 + * + * @author Open Platform + * @date 2023-12-19 + */ +@Service +public class ProProcessChildServiceImpl implements IProProcessChildService { + private static final Logger log = LoggerFactory.getLogger(ProProcessChildServiceImpl.class); + @Autowired + protected Validator validator; + @Autowired + private ProProcessChildMapper proProcessChildMapper; + + /** + * 查询unitprice + * + * @param childprocessId unitprice主键 + * @return unitprice + */ + @Override + public ProProcessChild selectProProcessChildByChildprocessId(String childprocessId) { + return proProcessChildMapper.selectProProcessChildByChildprocessId(childprocessId); + } + + /** + * 查询unitprice列表 + * + * @param proProcessChild unitprice + * @return unitprice + */ + @Override + @DS("#header.poolName") + public List selectProProcessChildList(ProProcessChild proProcessChild) { + return proProcessChildMapper.selectProProcessChildList(proProcessChild); + } + + /** + * 新增unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + @Transactional + @Override + public int insertProProcessChild(ProProcessChild proProcessChild) { + proProcessChild.setCreateTime(DateUtils.getNowDate()); + int rows = proProcessChildMapper.insertProProcessChild(proProcessChild); + insertMesUnitPrice(proProcessChild); + return rows; + } + + /** + * 修改unitprice + * + * @param proProcessChild unitprice + * @return 结果 + */ + @Transactional + @Override + public int updateProProcessChild(ProProcessChild proProcessChild) { + proProcessChild.setUpdateTime(DateUtils.getNowDate()); + proProcessChildMapper.deleteMesUnitPriceByChildprocessId(proProcessChild.getChildprocessId()); + insertMesUnitPrice(proProcessChild); + return proProcessChildMapper.updateProProcessChild(proProcessChild); + } + + /** + * 批量删除unitprice + * + * @param childprocessIds 需要删除的unitprice主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteProProcessChildByChildprocessIds(String[] childprocessIds) { + proProcessChildMapper.deleteMesUnitPriceByChildprocessIds(childprocessIds); + return proProcessChildMapper.deleteProProcessChildByChildprocessIds(childprocessIds); + } + + /** + * 删除unitprice信息 + * + * @param childprocessId unitprice主键 + * @return 结果 + */ + @Transactional + @Override + public int deleteProProcessChildByChildprocessId(String childprocessId) { + proProcessChildMapper.deleteMesUnitPriceByChildprocessId(childprocessId); + return proProcessChildMapper.deleteProProcessChildByChildprocessId(childprocessId); + } + + @Override + @DS("#header.poolName") + public String importProcessChild(List proProcessChildList, boolean isUpdateSupport, String operName) { + if (StringUtils.isNull(proProcessChildList) || proProcessChildList.size() == 0) { + throw new ServiceException("导入子工序数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + + for (ProProcessChild processChild : proProcessChildList) { + try { + // 验证是否存在这个子工序 + ProProcessChild u = proProcessChildMapper.selectProcessChildByCode(processChild.getChildprocessCode()); + if (StringUtils.isNull(u)) { + BeanValidators.validateWithException(validator, processChild); + processChild.setChildprocessId(IdUtils.fastSimpleUUID()); + processChild.setCreateBy(operName); + processChild.setCreateTime(DateUtils.getNowDate()); + proProcessChildMapper.insertProProcessChild(processChild); + successNum++; + successMsg.append("
" + successNum + "、子工序 " + processChild.getChildprocessName() + " 导入成功"); + } else if (isUpdateSupport) { + BeanValidators.validateWithException(validator, processChild); + processChild.setChildprocessId(u.getChildprocessId()); + processChild.setUpdateBy(operName); + processChild.setUpdateTime(DateUtils.getNowDate()); + proProcessChildMapper.updateProProcessChild(processChild); + successNum++; + successMsg.append("
" + successNum + "、子工序 " + processChild.getChildprocessName() + " 更新成功"); + } else { + failureNum++; + failureMsg.append("
" + failureNum + "、子工序 " + processChild.getChildprocessName() + " 已存在"); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、子工序 " + processChild.getChildprocessName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + /** + * 新增${subTable.functionName}信息 + * + * @param proProcessChild unitprice对象 + */ + public void insertMesUnitPrice(ProProcessChild proProcessChild) { + List mesUnitPriceList = proProcessChild.getMesUnitPriceList(); + String childprocessId = proProcessChild.getChildprocessId(); + if (StringUtils.isNotNull(mesUnitPriceList)) { + List list = new ArrayList(); + for (MesUnitPrice mesUnitPrice : mesUnitPriceList) { + mesUnitPrice.setChildprocessId(childprocessId); + list.add(mesUnitPrice); + } + if (list.size() > 0) { + proProcessChildMapper.batchMesUnitPrice(list); + } + } + } +} 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 38013df1..6656b442 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 @@ -229,4 +229,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from base_file where source_id = #{routeId} + + + + diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitPriceMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitPriceMapper.xml new file mode 100644 index 00000000..a57d2a12 --- /dev/null +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitPriceMapper.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select pic_id, factory_id, product_code, product_name, line_code, line_name, childprocess_id, childprocess_code, childprocess_name, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from mes_unit_price + + + + + + + + insert into mes_unit_price + + pic_id, + factory_id, + product_code, + product_name, + line_code, + line_name, + childprocess_id, + childprocess_code, + childprocess_name, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + + + #{picId}, + #{factoryId}, + #{productCode}, + #{productName}, + #{lineCode}, + #{lineName}, + #{childprocessId}, + #{childprocessCode}, + #{childprocessName}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update mes_unit_price + + factory_id = #{factoryId}, + product_code = #{productCode}, + product_name = #{productName}, + line_code = #{lineCode}, + line_name = #{lineName}, + childprocess_id = #{childprocessId}, + childprocess_code = #{childprocessCode}, + childprocess_name = #{childprocessName}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where pic_id = #{picId} + + + + delete from mes_unit_price where pic_id = #{picId} + + + + delete from mes_unit_price where pic_id in + + #{picId} + + + diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/ProProcessChildMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/ProProcessChildMapper.xml new file mode 100644 index 00000000..6f5e9ac2 --- /dev/null +++ b/op-modules/op-mes/src/main/resources/mapper/mes/ProProcessChildMapper.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select childprocess_id, factory_id, childprocess_code, childprocess_name, create_by, create_time, update_by, update_time, attr1, attr2, attr3, attr4 from pro_process_child + + + + + + + + + insert into pro_process_child + + childprocess_id, + factory_id, + childprocess_code, + childprocess_name, + create_by, + create_time, + update_by, + update_time, + attr1, + attr2, + attr3, + attr4, + + + #{childprocessId}, + #{factoryId}, + #{childprocessCode}, + #{childprocessName}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + + + + + update pro_process_child + + factory_id = #{factoryId}, + childprocess_code = #{childprocessCode}, + childprocess_name = #{childprocessName}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + + where childprocess_id = #{childprocessId} + + + + delete from pro_process_child where childprocess_id = #{childprocessId} + + + + delete from pro_process_child where childprocess_id in + + #{childprocessId} + + + + + delete from mes_unit_price where childprocess_id in + + #{childprocessId} + + + + + delete from mes_unit_price where childprocess_id = #{childprocessId} + + + + insert into mes_unit_price( pic_id, factory_id, product_code, product_name, line_code, line_name, childprocess_id, childprocess_code, childprocess_name, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time) values + + ( #{item.picId}, #{item.factoryId}, #{item.productCode}, #{item.productName}, #{item.lineCode}, #{item.lineName}, #{item.childprocessId}, #{item.childprocessCode}, #{item.childprocessName}, #{item.attr1}, #{item.attr2}, #{item.attr3}, #{item.attr4}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java index b5a5d72f..c0211d86 100644 --- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -123,8 +123,8 @@ public class OpenController extends BaseController { * supplier 供应商名称、CHARG 生产批号、comeQty 来料数量、testDate 检验日期 、 JYBH 检验编号、 * BJY 仓储报检人(OEM产品提报人)、WLLY 物料来源、ZCF 转出方、 ZCOEMCM 转出OEM厂名、 * memo 不合格情况描述 、PZGLBZG QC主管 + * "workflowId": 26235 * @param paramMap - * * @return */ @@ -133,5 +133,18 @@ public class OpenController extends BaseController { return openService.OAInspection(paramMap); } + /** + * ZL0020-成品检验控制流程 + * + * @param paramMap + * @return + */ + @PostMapping("/OAProcessInspection") + public AjaxResult OAProcessInspection(@RequestBody(required = false) Map paramMap) { + return openService.OAProcessInspection(paramMap); + } + + + } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java index 38b03033..bfe3338f 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java @@ -30,4 +30,6 @@ public interface OpenService { int insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce); AjaxResult OAInspection(Map paramMap); + + AjaxResult OAProcessInspection(Map paramMap); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index d1b6fef0..d9f0a00d 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -396,7 +396,26 @@ public class OpenServiceImpl implements OpenService { } } - public static String convertJsonToUrlParams(String json) throws IOException { + @Override + public AjaxResult OAProcessInspection(Map paramMap) { + try { + String result = HttpUtils.sendPostOA(oa_url, convertJsonToUrlParams(JSONObject.toJSONString(paramMap))); + System.out.println(result); + //返回示例{"result":"0","info":"成功","requestid":"2193799"} + Map resultMap=JSONObject.parseObject(result); + if (resultMap.get("result").equals(Constants.LOGIN_SUCCESS_STATUS)){ + return success(resultMap.get("info").toString(),resultMap.get("requestid").toString()); + }else { + return error(resultMap.get("info").toString()); + } + + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + public static String convertJsonToUrlParams(String json) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(json); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseProductController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseProductController.java index e23e53a1..084e1175 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseProductController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/BaseProductController.java @@ -23,7 +23,7 @@ import com.op.common.core.web.page.TableDataInfo; /** * 物料信息Controller - * + * * @author Open Platform * @date 2023-07-18 */ @@ -44,6 +44,8 @@ public class BaseProductController extends BaseController { return getDataTable(list); } + + /** * 导出物料信息列表 */