Browse Source

工艺路线管理功能

master_hella_20240701
zhousq 1 year ago
parent
commit
6e3385c4bd
  1. 8
      win-framework/win-spring-boot-starter-mybatis/pom.xml
  2. 177
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/ProcessrouteController.java
  3. 38
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteBaseVO.java
  4. 27
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteCreateReqVO.java
  5. 45
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteExcelVO.java
  6. 29
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteExportReqVO.java
  7. 31
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessroutePageReqVO.java
  8. 22
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteRespVO.java
  9. 85
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteUpdateGraphReqVO.java
  10. 32
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteUpdateReqVO.java
  11. 140
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/ProcessrouteNodeDetailController.java
  12. 58
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailBaseVO.java
  13. 12
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailCreateReqVO.java
  14. 61
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailExcelVO.java
  15. 55
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailExportReqVO.java
  16. 58
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailPageReqVO.java
  17. 19
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailRespVO.java
  18. 18
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailUpdateReqVO.java
  19. 38
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/processroute/ProcessrouteConvert.java
  20. 37
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/processroutenodedetail/ProcessrouteNodeDetailConvert.java
  21. 72
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/processroute/ProcessrouteDO.java
  22. 81
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/processroutenodedetail/ProcessrouteNodeDetailDO.java
  23. 44
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/processroute/ProcessrouteMapper.java
  24. 64
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/processroutenodedetail/ProcessrouteNodeDetailMapper.java
  25. 87
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroute/ProcessrouteService.java
  26. 137
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroute/ProcessrouteServiceImpl.java
  27. 89
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroutenodedetail/ProcessrouteNodeDetailService.java
  28. 122
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroutenodedetail/ProcessrouteNodeDetailServiceImpl.java
  29. 12
      win-module-mes/win-module-mes-biz/src/main/resources/mapper/processroute/ProcessrouteMapper.xml
  30. 12
      win-module-mes/win-module-mes-biz/src/main/resources/mapper/processroutenodedetail/ProcessrouteNodeDetailMapper.xml

8
win-framework/win-spring-boot-starter-mybatis/pom.xml

@ -69,10 +69,10 @@
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.apache.shardingsphere</groupId>-->
<!-- <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>-->
<!-- </dependency>-->
</dependencies>
</project>

177
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/ProcessrouteController.java

@ -0,0 +1,177 @@
package com.win.module.mes.controller.processroute;
import com.win.module.mes.controller.processroute.vo.*;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailCreateReqVO;
import com.win.module.mes.convert.processroutenodedetail.ProcessrouteNodeDetailConvert;
import com.win.module.mes.service.processroutenodedetail.ProcessrouteNodeDetailService;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import java.io.IOException;
import java.util.logging.Logger;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
import static com.win.framework.common.pojo.CommonResult.success;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.mes.dal.dataobject.processroute.ProcessrouteDO;
import com.win.module.mes.convert.processroute.ProcessrouteConvert;
import com.win.module.mes.service.processroute.ProcessrouteService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 工艺路线定义")
@RestController
@RequestMapping("/mes/processroute")
@Validated
public class ProcessrouteController {
private static Logger logger = Logger.getLogger(ProcessrouteController.class.getName());
@Resource
private ProcessrouteService processrouteService;
@Resource
private ProcessrouteNodeDetailService processrouteNodeDetailService;
@PostMapping("/create")
@Operation(summary = "创建工艺路线定义")
@PreAuthorize("@ss.hasPermission('mes:processroute:create')")
public CommonResult<Long> createProcessroute(@Valid @RequestBody ProcessrouteCreateReqVO createReqVO) {
return success(processrouteService.createProcessroute(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工艺路线定义")
@PreAuthorize("@ss.hasPermission('mes:processroute:update')")
public CommonResult<Boolean> updateProcessroute(@Valid @RequestBody ProcessrouteUpdateReqVO updateReqVO) {
int result = processrouteService.updateProcessroute(updateReqVO);
return success(result > 0);
}
@Value("${win.mes.start-process-code}")
private String startProcessCode;
@Value("${win.mes.end-process-code}")
private String endProcesscode;
@PostMapping("/updategraph")
@Operation(summary = "更新工艺路线的图形定义")
// @PreAuthorize("@ss.hasPermission('mes:processroute:update')")
/*工艺路线图形定义 工艺路线编码,工艺路线图形JSON*/
public CommonResult<Boolean> updateProcessrouteGraph(@Valid @RequestBody ProcessrouteUpdateGraphReqVO graphVo) {
/**1解析图形 生成 路线定义的配置 关键字段 工序编码紧前工序紧后工序ProcessrouteUpdateGraphReqVO
* 如果紧前工序为startProcessCode表示该工序为起始工工序
* 如果紧后工序为endProcesscode表示该工序为结束工工序
* */
//logger.info(startProcessCode+"----------------"+endProcesscode);
List<ProcessrouteNodeDetailCreateReqVO> processConfigFromJsonByCells = graphVo.getProcessConfigFromJsonByCells(graphVo.getGraphJson(),graphVo.getProcessrouteCode());
ProcessrouteDO processroute=new ProcessrouteDO();
processroute.setId(graphVo.getProcessrouteId());
processroute.setProcessrouteCode(graphVo.getProcessrouteCode());
processroute.setGraphJson(graphVo.getGraphJson().toJSONString());
processrouteService.updateProcessrouteGraph(processroute,ProcessrouteNodeDetailConvert.INSTANCE.convertListDetail(processConfigFromJsonByCells));
//logger.info(graphVo.getGraphJson().toJSONString());
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工艺路线定义")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:processroute:delete')")
public CommonResult<Boolean> deleteProcessroute(@RequestParam("id") Long id) {
int result = processrouteService.deleteProcessroute(id);
return success(result > 0);
}
@GetMapping("/get")
@Operation(summary = "获得工艺路线定义")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:processroute:query')")
public CommonResult<ProcessrouteRespVO> getProcessroute(@RequestParam("id") Long id) {
ProcessrouteDO processroute = processrouteService.getProcessroute(id);
return success(ProcessrouteConvert.INSTANCE.convert(processroute));
}
// @GetMapping("/getProcess")
// @Operation(summary = "获得当前工艺路线的工序配置")
// @Parameter(name = "routecode" ,description = "工艺路线编码",required = true,example = "")
// @PreAuthorize("@ss.hasPermission('mes:processroute:query')")
// public CommonResult<ProcessrouteRespVO> getProcessList(@RequestParam("routecode") String processRouteCode) {
// ProcessrouteDO processroute = processrouteService.getProcessroute(id);
// return success(ProcessrouteConvert.INSTANCE.convert(processroute));
// }
@GetMapping("/list")
@Operation(summary = "获得工艺路线定义列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('mes:processroute:query')")
public CommonResult<List<ProcessrouteRespVO>> getProcessrouteList(@RequestParam("ids") Collection<Long> ids) {
List<ProcessrouteDO> list = processrouteService.getProcessrouteList(ids);
return success(ProcessrouteConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得工艺路线定义分页")
@PreAuthorize("@ss.hasPermission('mes:processroute:query')")
public CommonResult<PageResult<ProcessrouteRespVO>> getProcessroutePage(@Valid ProcessroutePageReqVO pageVO) {
PageResult<ProcessrouteDO> pageResult = processrouteService.getProcessroutePage(pageVO);
PageResult<ProcessrouteRespVO> processrouteRespVOPageResult = ProcessrouteConvert.INSTANCE.convertPage(pageResult);
return success(processrouteRespVOPageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出工艺路线定义 Excel")
@PreAuthorize("@ss.hasPermission('mes:processroute:export')")
@OperateLog(type = EXPORT)
public void exportProcessrouteExcel(@Valid ProcessrouteExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProcessrouteDO> list = processrouteService.getProcessrouteList(exportReqVO);
// 导出 Excel
List<ProcessrouteExcelVO> datas = ProcessrouteConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "工艺路线定义.xls", "数据", ProcessrouteExcelVO.class, datas);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入工艺路线定义模板")
public void importTemplate(HttpServletResponse response) throws IOException {
List<ProcessrouteExcelVO> list = Arrays.asList();
// 输出
ExcelUtils.write(response, "工艺路线定义基本信息导入模板.xls", "工艺路线定义基本信息列表", ProcessrouteExcelVO.class, list);
}
@PostMapping("/import")
@Operation(summary = "导入工艺路线定义基本信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('mes:processroute:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProcessrouteExcelVO> list = ExcelUtils.read(file, ProcessrouteExcelVO.class);
List<ProcessrouteExcelVO> errorList = processrouteService.importProcessrouteList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("工艺路线定义基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
}

38
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteBaseVO.java

@ -0,0 +1,38 @@
package com.win.module.mes.controller.processroute.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import javax.validation.constraints.*;
/**
* 工艺路线定义 Base VO提供给添加修改详细的子 VO 使用
* 如果子 VO 存在差异的字段请不要添加到这里影响 Swagger 文档生成
*/
@Data
public class ProcessrouteBaseVO {
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "路线编码")
private String processrouteCode;
@Schema(description = "路线名称", example = "李四")
private String processName;
@Schema(description = "产品编码")
private String productCode;
@Schema(description = "版本号")
private BigDecimal routeVersion;
}

27
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteCreateReqVO.java

@ -0,0 +1,27 @@
package com.win.module.mes.controller.processroute.vo;
import com.alibaba.fastjson.JSONArray;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺路线定义创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteCreateReqVO extends ProcessrouteBaseVO {
@Schema(description = "删除时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime deleteTime;
@Schema(description = "并发乐观锁")
private Integer concurrencyStamp;
@Schema(description = "删除用户名")
private String deleter;
@Schema(description = "图形数据")
private String graphJson;
}

45
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteExcelVO.java

@ -0,0 +1,45 @@
package com.win.module.mes.controller.processroute.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* 工艺路线定义 Excel VO
*
* @author 超级管理员
*/
@Data
public class ProcessrouteExcelVO {
@ExcelProperty("主键")
private Long id;
@ExcelProperty("状态")
private String status;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("路线编码")
private String processrouteCode;
@ExcelProperty("路线名称")
private String processName;
@ExcelProperty("产品编码")
private String productCode;
@ExcelProperty("版本号")
private BigDecimal routeVersion;
}

29
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteExportReqVO.java

@ -0,0 +1,29 @@
package com.win.module.mes.controller.processroute.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
@Schema(description = "管理后台 - 工艺路线定义 Excel 导出 Request VO,参数和 ProcessroutePageReqVO 是一致的")
@Data
public class ProcessrouteExportReqVO {
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "路线编码")
private String processrouteCode;
@Schema(description = "路线名称", example = "李四")
private String processName;
@Schema(description = "产品编码")
private String productCode;
@Schema(description = "版本号")
private BigDecimal routeVersion;
}

31
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessroutePageReqVO.java

@ -0,0 +1,31 @@
package com.win.module.mes.controller.processroute.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
@Schema(description = "管理后台 - 工艺路线定义分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessroutePageReqVO extends PageParam {
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "路线编码")
private String processrouteCode;
@Schema(description = "路线名称", example = "李四")
private String processName;
@Schema(description = "产品编码")
private String productCode;
@Schema(description = "版本号")
private BigDecimal routeVersion;
}

22
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteRespVO.java

@ -0,0 +1,22 @@
package com.win.module.mes.controller.processroute.vo;
import com.alibaba.fastjson.JSONArray;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工艺路线定义 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteRespVO extends ProcessrouteBaseVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30325")
private Long id;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "图形数据")
private String graphJson;
}

85
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteUpdateGraphReqVO.java

@ -0,0 +1,85 @@
package com.win.module.mes.controller.processroute.vo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailCreateReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
import java.util.*;
@Schema(description = "管理后台 - 工艺路线定义路线配置")
@Data
@ToString(callSuper = true)
public class ProcessrouteUpdateGraphReqVO {
@Schema(description = "工艺路线ID")
private Long processrouteId;
@Schema(description = "路线编码")
private String processrouteCode;
@Schema(description = "路线名称", example = "路线")
private String processName;
@Schema(description = "图形JOSN")
private JSONObject graphJson;
//从图形配置数据中进行转换出配置 通过Cells 数组方式
/**参考格式*/
public List<ProcessrouteNodeDetailCreateReqVO> getProcessConfigFromJsonByCells(JSONObject json,String processrouteCode) {
Optional<JSONObject> data = Optional.ofNullable(json);
Map<String, ProcessrouteNodeDetailCreateReqVO> nodesMap=new HashMap<>();//节点数据
Map<String,JSONObject> edgesMap=new HashMap<>();//边数据
//分割图形数据输出节点和边的数据
if(data.isPresent()){
JSONArray jsonArray = data.get().getJSONArray("cells");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject cell=jsonArray.getJSONObject(i);
String shape = cell.getString("shape");
ProcessrouteNodeDetailCreateReqVO vo=null;
//先处理所有节点,暂存所有边
if(shape.equalsIgnoreCase("edge")){
JSONObject source = cell.getJSONObject("source");
String edgeCode = source.getString("cell");
if(edgesMap.get(edgeCode)==null){
edgesMap.put(edgeCode,cell);}
}else{
String nodeId = cell.getString("id");
if(nodesMap.get(nodeId)==null){
vo=new ProcessrouteNodeDetailCreateReqVO();
//vo.setGraphX(cell.getInteger("x"));
//vo.setGraphY(cell.getInteger("y"));
vo.setGraphPro(cell.getString("attrs"));
vo.setNextCode("");
vo.setPreCode("");
vo.setProcessCode(nodeId);
//vo.setNodeName(cell.getString())
vo.setProcessrouteCode(processrouteCode);
nodesMap.put(nodeId,vo);
}
}
}
}
edgesMap.keySet().stream().forEach(key->{
JSONObject jsonObject = edgesMap.get(key);
String source = jsonObject.getJSONObject("source").getString("cell");
String target = jsonObject.getJSONObject("target").getString("cell");
ProcessrouteNodeDetailCreateReqVO pVOS = nodesMap.get(source);
ProcessrouteNodeDetailCreateReqVO pVOT = nodesMap.get(target);
if(null!=pVOS){
pVOS.setNextCode(target);
}
if(null!=pVOT){
pVOT.setPreCode(source);
}
});
List<ProcessrouteNodeDetailCreateReqVO> processrouteNodeDetailCreateReqVOS = nodesMap.values().stream().toList();
return processrouteNodeDetailCreateReqVOS;
}
}

32
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroute/vo/ProcessrouteUpdateReqVO.java

@ -0,0 +1,32 @@
package com.win.module.mes.controller.processroute.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺路线定义更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteUpdateReqVO extends ProcessrouteBaseVO {
@Schema(description = "删除时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime deleteTime;
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30325")
@NotNull(message = "主键不能为空")
private Long id;
@Schema(description = "并发乐观锁")
private Integer concurrencyStamp;
@Schema(description = "删除用户名")
private String deleter;
@Schema(description = "图形数据")
private String graphJson;
}

140
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/ProcessrouteNodeDetailController.java

@ -0,0 +1,140 @@
package com.win.module.mes.controller.processroutenodedetail;
import com.win.module.mes.controller.processroutenodedetail.vo.*;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
import java.io.IOException;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.pojo.CommonResult;
import static com.win.framework.common.pojo.CommonResult.success;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
import com.win.module.mes.convert.processroutenodedetail.ProcessrouteNodeDetailConvert;
import com.win.module.mes.service.processroutenodedetail.ProcessrouteNodeDetailService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 工艺路由工序节点配置明细")
@RestController
@RequestMapping("/mes/processroute-node-detail")
@Validated
public class ProcessrouteNodeDetailController {
@Resource
private ProcessrouteNodeDetailService processrouteNodeDetailService;
@PostMapping("/create")
@Operation(summary = "创建工艺路由工序节点配置明细")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:create')")
public CommonResult<Long> createProcessrouteNodeDetail(@Valid @RequestBody ProcessrouteNodeDetailCreateReqVO createReqVO) {
return success(processrouteNodeDetailService.createProcessrouteNodeDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工艺路由工序节点配置明细")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:update')")
public CommonResult<Boolean> updateProcessrouteNodeDetail(@Valid @RequestBody ProcessrouteNodeDetailUpdateReqVO updateReqVO) {
int result = processrouteNodeDetailService.updateProcessrouteNodeDetail(updateReqVO);
return success(result > 0);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工艺路由工序节点配置明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:delete')")
public CommonResult<Boolean> deleteProcessrouteNodeDetail(@RequestParam("id") Long id) {
int result = processrouteNodeDetailService.deleteProcessrouteNodeDetail(id);
return success(result > 0);
}
@GetMapping("/get")
@Operation(summary = "获得工艺路由工序节点配置明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:query')")
public CommonResult<ProcessrouteNodeDetailRespVO> getProcessrouteNodeDetail(@RequestParam("id") Long id) {
ProcessrouteNodeDetailDO processrouteNodeDetail = processrouteNodeDetailService.getProcessrouteNodeDetail(id);
return success(ProcessrouteNodeDetailConvert.INSTANCE.convert(processrouteNodeDetail));
}
@GetMapping("/list")
@Operation(summary = "获得工艺路由工序节点配置明细列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:query')")
public CommonResult<List<ProcessrouteNodeDetailRespVO>> getProcessrouteNodeDetailList(@RequestParam("ids") Collection<Long> ids) {
List<ProcessrouteNodeDetailDO> list = processrouteNodeDetailService.getProcessrouteNodeDetailList(ids);
return success(ProcessrouteNodeDetailConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得工艺路由工序节点配置明细分页")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:query')")
public CommonResult<PageResult<ProcessrouteNodeDetailRespVO>> getProcessrouteNodeDetailPage(@Valid ProcessrouteNodeDetailPageReqVO pageVO) {
PageResult<ProcessrouteNodeDetailDO> pageResult = processrouteNodeDetailService.getProcessrouteNodeDetailPage(pageVO);
return success(ProcessrouteNodeDetailConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工艺路由工序节点配置明细 Excel")
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:export')")
@OperateLog(type = EXPORT)
public void exportProcessrouteNodeDetailExcel(@Valid ProcessrouteNodeDetailExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ProcessrouteNodeDetailDO> list = processrouteNodeDetailService.getProcessrouteNodeDetailList(exportReqVO);
// 导出 Excel
List<ProcessrouteNodeDetailExcelVO> datas = ProcessrouteNodeDetailConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "工艺路由工序节点配置明细.xls", "数据", ProcessrouteNodeDetailExcelVO.class, datas);
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入工艺路由工序节点配置明细模板")
public void importTemplate(HttpServletResponse response) throws IOException {
List<ProcessrouteNodeDetailExcelVO> list = Arrays.asList();
// 输出
ExcelUtils.write(response, "工艺路由工序节点配置明细基本信息导入模板.xls", "工艺路由工序节点配置明细基本信息列表", ProcessrouteNodeDetailExcelVO.class, list);
}
@PostMapping("/import")
@Operation(summary = "导入工艺路由工序节点配置明细基本信息")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('mes:processroute-node-detail:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProcessrouteNodeDetailExcelVO> list = ExcelUtils.read(file, ProcessrouteNodeDetailExcelVO.class);
List<ProcessrouteNodeDetailExcelVO> errorList = processrouteNodeDetailService.importProcessrouteNodeDetailList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("工艺路由工序节点配置明细基本信息导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xlsx", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
}

58
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailBaseVO.java

@ -0,0 +1,58 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 工艺路由工序节点配置明细 Base VO提供给添加修改详细的子 VO 使用
* 如果子 VO 存在差异的字段请不要添加到这里影响 Swagger 文档生成
*/
@Data
public class ProcessrouteNodeDetailBaseVO {
@Schema(description = "删除时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime deleteTime;
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "并发乐观锁")
private Integer concurrencyStamp;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "删除用户名")
private String deleter;
@Schema(description = "工序编码")
private String processCode;
@Schema(description = "紧前工序编码")
private String preCode;
@Schema(description = "紧后工序编码")
private String nextCode;
@Schema(description = "图形位置坐标横轴")
private Integer graphX;
@Schema(description = "图形位置坐标纵轴")
private Integer graphY;
@Schema(description = "节点属性")
private String graphPro;
@Schema(description = "工艺路线编码")
private String processrouteCode;
@Schema(description = "节点名称")
private String nodeName;
}

12
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailCreateReqVO.java

@ -0,0 +1,12 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "管理后台 - 工艺路由工序节点配置明细创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteNodeDetailCreateReqVO extends ProcessrouteNodeDetailBaseVO {
}

61
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailExcelVO.java

@ -0,0 +1,61 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* 工艺路由工序节点配置明细 Excel VO
*
* @author zhousq
*/
@Data
public class ProcessrouteNodeDetailExcelVO {
@ExcelProperty("删除时间")
private LocalDateTime deleteTime;
@ExcelProperty("主键")
private Long id;
@ExcelProperty("状态")
private String status;
@ExcelProperty("并发乐观锁")
private Integer concurrencyStamp;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ExcelProperty("删除用户名")
private String deleter;
@ExcelProperty("工序编码")
private String processCode;
@ExcelProperty("紧前工序编码")
private String preCode;
@ExcelProperty("紧后工序编码")
private String nextCode;
@ExcelProperty("图形位置坐标横轴")
private Integer graphX;
@ExcelProperty("图形位置坐标纵轴")
private String graphY;
@ExcelProperty("节点属性")
private String graphPro;
@ExcelProperty("工艺路线")
private String processrouteCode;
}

55
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailExportReqVO.java

@ -0,0 +1,55 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺路由工序节点配置明细 Excel 导出 Request VO,参数和 ProcessrouteNodeDetailPageReqVO 是一致的")
@Data
public class ProcessrouteNodeDetailExportReqVO {
@Schema(description = "删除时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] deleteTime;
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "并发乐观锁")
private Integer concurrencyStamp;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "删除用户名")
private String deleter;
@Schema(description = "工序编码")
private String processCode;
@Schema(description = "紧前工序编码")
private String preCode;
@Schema(description = "紧后工序编码")
private String nextCode;
@Schema(description = "图形位置坐标横轴")
private Integer graphX;
@Schema(description = "图形位置坐标纵轴")
private String graphY;
@Schema(description = "节点属性")
private String graphPro;
@Schema(description = "工艺路线编码")
private String processrouteCode;
}

58
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailPageReqVO.java

@ -0,0 +1,58 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.win.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺路由工序节点配置明细分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteNodeDetailPageReqVO extends PageParam {
@Schema(description = "删除时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] deleteTime;
@Schema(description = "状态", example = "2")
private String status;
@Schema(description = "并发乐观锁")
private Integer concurrencyStamp;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "删除用户名")
private String deleter;
@Schema(description = "工序编码")
private String processCode;
@Schema(description = "紧前工序编码")
private String preCode;
@Schema(description = "紧后工序编码")
private String nextCode;
@Schema(description = "图形位置坐标横轴")
private Integer graphX;
@Schema(description = "图形位置坐标纵轴")
private String graphY;
@Schema(description = "节点属性")
private String graphPro;
@Schema(description = "工艺路线编码")
private String processrouteCode;
}

19
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailRespVO.java

@ -0,0 +1,19 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工艺路由工序节点配置明细 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteNodeDetailRespVO extends ProcessrouteNodeDetailBaseVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15072")
private Long id;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

18
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/processroutenodedetail/vo/ProcessrouteNodeDetailUpdateReqVO.java

@ -0,0 +1,18 @@
package com.win.module.mes.controller.processroutenodedetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 工艺路由工序节点配置明细更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessrouteNodeDetailUpdateReqVO extends ProcessrouteNodeDetailBaseVO {
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15072")
@NotNull(message = "主键不能为空")
private Long id;
}

38
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/processroute/ProcessrouteConvert.java

@ -0,0 +1,38 @@
package com.win.module.mes.convert.processroute;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.controller.processroute.vo.ProcessrouteCreateReqVO;
import com.win.module.mes.controller.processroute.vo.ProcessrouteExcelVO;
import com.win.module.mes.controller.processroute.vo.ProcessrouteRespVO;
import com.win.module.mes.controller.processroute.vo.ProcessrouteUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.mes.dal.dataobject.processroute.ProcessrouteDO;
/**
* 工艺路线定义 Convert
*
* @author 超级管理员
*/
@Mapper
public interface ProcessrouteConvert {
ProcessrouteConvert INSTANCE = Mappers.getMapper(ProcessrouteConvert.class);
ProcessrouteDO convert(ProcessrouteCreateReqVO bean);
ProcessrouteDO convert(ProcessrouteUpdateReqVO bean);
ProcessrouteRespVO convert(ProcessrouteDO bean);
List<ProcessrouteRespVO> convertList(List<ProcessrouteDO> list);
PageResult<ProcessrouteRespVO> convertPage(PageResult<ProcessrouteDO> page);
List<ProcessrouteExcelVO> convertList02(List<ProcessrouteDO> list);
ProcessrouteDO convert(ProcessrouteExcelVO item);
}

37
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/processroutenodedetail/ProcessrouteNodeDetailConvert.java

@ -0,0 +1,37 @@
package com.win.module.mes.convert.processroutenodedetail;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailCreateReqVO;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailExcelVO;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailRespVO;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
/**
* 工艺路由工序节点配置明细 Convert
*
* @author zhousq
*/
@Mapper
public interface ProcessrouteNodeDetailConvert {
ProcessrouteNodeDetailConvert INSTANCE = Mappers.getMapper(ProcessrouteNodeDetailConvert.class);
ProcessrouteNodeDetailDO convert(ProcessrouteNodeDetailCreateReqVO bean);
ProcessrouteNodeDetailDO convert(ProcessrouteNodeDetailUpdateReqVO bean);
ProcessrouteNodeDetailRespVO convert(ProcessrouteNodeDetailDO bean);
List<ProcessrouteNodeDetailRespVO> convertList(List<ProcessrouteNodeDetailDO> list);
List<ProcessrouteNodeDetailDO> convertListDetail(List<ProcessrouteNodeDetailCreateReqVO> list);
PageResult<ProcessrouteNodeDetailRespVO> convertPage(PageResult<ProcessrouteNodeDetailDO> page);
List<ProcessrouteNodeDetailExcelVO> convertList02(List<ProcessrouteNodeDetailDO> list);
}

72
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/processroute/ProcessrouteDO.java

@ -0,0 +1,72 @@
package com.win.module.mes.dal.dataobject.processroute;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
/**
* 工艺路线定义 DO
*
* @author 超级管理员
*/
@TableName("basic_processroute")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessrouteDO extends BaseDO {
/**
* 删除时间
*/
private LocalDateTime deleteTime;
/**
* 主键
*/
@TableId
private Long id;
/**
* 状态
*/
private String status;
/**
* 并发乐观锁
*/
private Integer concurrencyStamp;
/**
* 备注
*/
private String remark;
/**
* 删除用户名
*/
private String deleter;
/**
* 路线编码
*/
private String processrouteCode;
/**
* 路线名称
*/
private String processName;
/**
* 产品编码
*/
private String productCode;
/**
* 版本号
*/
private BigDecimal routeVersion;
/**
* 图形数据
*/
private String graphJson;
}

81
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/processroutenodedetail/ProcessrouteNodeDetailDO.java

@ -0,0 +1,81 @@
package com.win.module.mes.dal.dataobject.processroutenodedetail;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.win.framework.mybatis.core.dataobject.BaseDO;
import org.apache.ibatis.type.Alias;
/**
* 工艺路由工序节点配置明细 DO
*
* @author zhousq
*/
@TableName("strategy_processroute_node_detail" )
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessrouteNodeDetailDO extends BaseDO {
/**
* 删除时间
*/
private LocalDateTime deleteTime;
/**
* 主键
*/
@TableId
private Long id;
/**
* 状态
*/
private String status;
/**
* 并发乐观锁
*/
private Integer concurrencyStamp;
/**
* 备注
*/
private String remark;
/**
* 删除用户名
*/
private String deleter;
/**
* 工序编码
*/
private String processCode;
/**
* 紧前工序编码
*/
private String preCode;
/**
* 紧后工序编码
*/
private String nextCode;
/**
* 图形位置坐标横轴
*/
private Integer graphX;
/**
* 图形位置坐标纵轴
*/
private String graphY;
/**
* 节点属性
*/
private String graphPro;
/**
* 工艺路线编码
*
*/
private String processrouteCode;
}

44
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/processroute/ProcessrouteMapper.java

@ -0,0 +1,44 @@
package com.win.module.mes.dal.mysql.processroute;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.mes.controller.processroute.vo.ProcessrouteExportReqVO;
import com.win.module.mes.controller.processroute.vo.ProcessroutePageReqVO;
import com.win.module.mes.dal.dataobject.processroute.ProcessrouteDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 工艺路线定义 Mapper
*
* @author 超级管理员
*/
@Mapper
public interface ProcessrouteMapper extends BaseMapperX<ProcessrouteDO> {
default PageResult<ProcessrouteDO> selectPage(ProcessroutePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessrouteDO>()
.eqIfPresent(ProcessrouteDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProcessrouteDO::getProcessrouteCode, reqVO.getProcessrouteCode())
.likeIfPresent(ProcessrouteDO::getProcessName, reqVO.getProcessName())
.eqIfPresent(ProcessrouteDO::getProductCode, reqVO.getProductCode())
.eqIfPresent(ProcessrouteDO::getRouteVersion, reqVO.getRouteVersion())
.orderByDesc(ProcessrouteDO::getId));
}
default List<ProcessrouteDO> selectList(ProcessrouteExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ProcessrouteDO>()
.eqIfPresent(ProcessrouteDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProcessrouteDO::getProcessrouteCode, reqVO.getProcessrouteCode())
.likeIfPresent(ProcessrouteDO::getProcessName, reqVO.getProcessName())
.eqIfPresent(ProcessrouteDO::getProductCode, reqVO.getProductCode())
.eqIfPresent(ProcessrouteDO::getRouteVersion, reqVO.getRouteVersion())
.orderByDesc(ProcessrouteDO::getId));
}
default ProcessrouteDO selectByCode(String code) {
return selectOne(ProcessrouteDO::getProcessrouteCode, code);
}
}

64
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/processroutenodedetail/ProcessrouteNodeDetailMapper.java

@ -0,0 +1,64 @@
package com.win.module.mes.dal.mysql.processroutenodedetail;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailExportReqVO;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailPageReqVO;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 工艺路由工序节点配置明细 Mapper
*
* @author zhousq
*/
@Mapper
public interface ProcessrouteNodeDetailMapper extends BaseMapperX<ProcessrouteNodeDetailDO> {
default PageResult<ProcessrouteNodeDetailDO> selectPage(ProcessrouteNodeDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessrouteNodeDetailDO>()
.betweenIfPresent(ProcessrouteNodeDetailDO::getDeleteTime, reqVO.getDeleteTime())
.eqIfPresent(ProcessrouteNodeDetailDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProcessrouteNodeDetailDO::getConcurrencyStamp, reqVO.getConcurrencyStamp())
.eqIfPresent(ProcessrouteNodeDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ProcessrouteNodeDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ProcessrouteNodeDetailDO::getDeleter, reqVO.getDeleter())
.eqIfPresent(ProcessrouteNodeDetailDO::getProcessCode, reqVO.getProcessCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getPreCode, reqVO.getPreCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getNextCode, reqVO.getNextCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphX, reqVO.getGraphX())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphY, reqVO.getGraphY())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphPro, reqVO.getGraphPro())
.eqIfPresent(ProcessrouteNodeDetailDO::getProcessrouteCode, reqVO.getProcessrouteCode())
.orderByDesc(ProcessrouteNodeDetailDO::getId));
}
default List<ProcessrouteNodeDetailDO> selectList(ProcessrouteNodeDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ProcessrouteNodeDetailDO>()
.betweenIfPresent(ProcessrouteNodeDetailDO::getDeleteTime, reqVO.getDeleteTime())
.eqIfPresent(ProcessrouteNodeDetailDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProcessrouteNodeDetailDO::getConcurrencyStamp, reqVO.getConcurrencyStamp())
.eqIfPresent(ProcessrouteNodeDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ProcessrouteNodeDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ProcessrouteNodeDetailDO::getDeleter, reqVO.getDeleter())
.eqIfPresent(ProcessrouteNodeDetailDO::getProcessCode, reqVO.getProcessCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getPreCode, reqVO.getPreCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getNextCode, reqVO.getNextCode())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphX, reqVO.getGraphX())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphY, reqVO.getGraphY())
.eqIfPresent(ProcessrouteNodeDetailDO::getGraphPro, reqVO.getGraphPro())
.eqIfPresent(ProcessrouteNodeDetailDO::getProcessrouteCode, reqVO.getProcessrouteCode())
.orderByDesc(ProcessrouteNodeDetailDO::getId));
}
/***
*
*/
default Integer deleteByprocessRouteCode(String processRoutCode){
LambdaQueryWrapperX<ProcessrouteNodeDetailDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<ProcessrouteNodeDetailDO>()
.eq(ProcessrouteNodeDetailDO::getProcessCode,processRoutCode);
return delete(lambdaQueryWrapperX);
}
}

87
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroute/ProcessrouteService.java

@ -0,0 +1,87 @@
package com.win.module.mes.service.processroute;
import java.util.*;
import javax.validation.*;
import com.win.module.mes.controller.processroute.vo.*;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailCreateReqVO;
import com.win.module.mes.dal.dataobject.processroute.ProcessrouteDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
/**
* 工艺路线定义 Service 接口
*
* @author 超级管理员
*/
public interface ProcessrouteService {
/**
* 创建工艺路线定义
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcessroute(@Valid ProcessrouteCreateReqVO createReqVO);
/**
* 更新工艺路线定义
*
* @param updateReqVO 更新信息
*/
Integer updateProcessroute(@Valid ProcessrouteUpdateReqVO updateReqVO);
/**
* 更新工艺路线定义--新接口使用图形化编辑的更新
*
* @param dao 更新信息
*/
Integer updateProcessrouteGraph( @Valid ProcessrouteDO dao, List<ProcessrouteNodeDetailDO> list);
/**
* 删除工艺路线定义
*
* @param id 编号
*/
Integer deleteProcessroute(Long id);
/**
* 获得工艺路线定义
*
* @param id 编号
* @return 工艺路线定义
*/
ProcessrouteDO getProcessroute(Long id);
/**
* 获得工艺路线定义列表
*
* @param ids 编号
* @return 工艺路线定义列表
*/
List<ProcessrouteDO> getProcessrouteList(Collection<Long> ids);
/**
* 获得工艺路线定义分页
*
* @param pageReqVO 分页查询
* @return 工艺路线定义分页
*/
PageResult<ProcessrouteDO> getProcessroutePage(ProcessroutePageReqVO pageReqVO);
/**
* 获得工艺路线定义列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 工艺路线定义列表
*/
List<ProcessrouteDO> getProcessrouteList(ProcessrouteExportReqVO exportReqVO);
/**
* 导入工艺路线定义主信息
*
* @param datas 导入工艺路线定义主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<ProcessrouteExcelVO> importProcessrouteList(List<ProcessrouteExcelVO> datas, Integer mode, boolean updatePart);
}

137
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroute/ProcessrouteServiceImpl.java

@ -0,0 +1,137 @@
package com.win.module.mes.service.processroute;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.module.mes.controller.processroute.vo.*;
import com.win.module.mes.controller.processroutenodedetail.vo.ProcessrouteNodeDetailCreateReqVO;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
import com.win.module.mes.dal.mysql.processroutenodedetail.ProcessrouteNodeDetailMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.mes.dal.dataobject.processroute.ProcessrouteDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.convert.processroute.ProcessrouteConvert;
import com.win.module.mes.dal.mysql.processroute.ProcessrouteMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.mes.enums.ErrorCodeConstants.*;
/**
* 工艺路线定义 Service 实现类
*
* @author 超级管理员
*/
@Service
@Validated
public class ProcessrouteServiceImpl implements ProcessrouteService {
@Resource
private ProcessrouteMapper processrouteMapper;
@Resource
private ProcessrouteNodeDetailMapper processDetaiMapper;
@Override
public Long createProcessroute(ProcessrouteCreateReqVO createReqVO) {
// 插入
ProcessrouteDO processroute = ProcessrouteConvert.INSTANCE.convert(createReqVO);
processrouteMapper.insert(processroute);
// 返回
return processroute.getId();
}
@Override
public Integer updateProcessroute(ProcessrouteUpdateReqVO updateReqVO) {
// 校验存在
validateProcessrouteExists(updateReqVO.getId());
// 更新
ProcessrouteDO updateObj = ProcessrouteConvert.INSTANCE.convert(updateReqVO);
return processrouteMapper.updateById(updateObj);
}
@Override
@Transactional
public Integer deleteProcessroute(Long id) {
// 校验存在
//validateProcessrouteExists(id);
Integer ret=0;
ProcessrouteDO processroute = getProcessroute(id);
if(processroute==null){
throw exception(PROCESSROUTE_NOT_EXISTS);
}else{
ret=processrouteMapper.deleteById(id);
ret+=processDetaiMapper.deleteByprocessRouteCode(processroute.getProcessrouteCode());
}
// 删除-主表和配置明细表
return ret;
}
private void validateProcessrouteExists(Long id) {
if (processrouteMapper.selectById(id) == null) {
throw exception(PROCESSROUTE_NOT_EXISTS);
}
}
@Override
public ProcessrouteDO getProcessroute(Long id) {
return processrouteMapper.selectById(id);
}
@Override
public List<ProcessrouteDO> getProcessrouteList(Collection<Long> ids) {
return processrouteMapper.selectBatchIds(ids);
}
@Override
public PageResult<ProcessrouteDO> getProcessroutePage(ProcessroutePageReqVO pageReqVO) {
return processrouteMapper.selectPage(pageReqVO);
}
@Override
public List<ProcessrouteDO> getProcessrouteList(ProcessrouteExportReqVO exportReqVO) {
return processrouteMapper.selectList(exportReqVO);
}
@Override
public List<ProcessrouteExcelVO> importProcessrouteList(List<ProcessrouteExcelVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PROCESSROUTE_IMPORT_LIST_IS_EMPTY);
}
List<ProcessrouteExcelVO> errorList = new ArrayList<>();
datas.forEach(item -> {
if(errorList == null){
// 判断如果不存在,在进行插入
ProcessrouteDO obj = processrouteMapper.selectByCode(item.getProcessrouteCode());
if (obj == null&& mode != 3) {
processrouteMapper.insert(ProcessrouteConvert.INSTANCE.convert(item));
}
else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新
ProcessrouteDO processrouteDO = ProcessrouteConvert.INSTANCE.convert(item);
processrouteDO.setId(obj.getId());
processrouteMapper.updateById(obj);
}
}
});
return errorList;
}
@Transactional
public Integer updateProcessrouteGraph(@Valid ProcessrouteDO dao, List<ProcessrouteNodeDetailDO> list){
try{
processrouteMapper.updateById(dao);
//QueryWrapper<ProcessrouteNodeDetailDO> queryWrapper = new QueryWrapper<>();
//queryWrapper.eq("processroute_code",);
processDetaiMapper.deleteByprocessRouteCode(dao.getProcessrouteCode());
processDetaiMapper.insertBatch(list);
return 0;}catch (Exception e){
return -1;
}
}
}

89
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroutenodedetail/ProcessrouteNodeDetailService.java

@ -0,0 +1,89 @@
package com.win.module.mes.service.processroutenodedetail;
import java.util.*;
import javax.validation.*;
import com.win.module.mes.controller.processroutenodedetail.vo.*;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
import com.win.framework.common.pojo.PageResult;
/**
* 工艺路由工序节点配置明细 Service 接口
*
* @author zhousq
*/
public interface ProcessrouteNodeDetailService {
/**
* 创建工艺路由工序节点配置明细
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcessrouteNodeDetail(@Valid ProcessrouteNodeDetailCreateReqVO createReqVO);
/**
* 更新工艺路由工序节点配置明细
*
* @param updateReqVO 更新信息
*/
Integer updateProcessrouteNodeDetail(@Valid ProcessrouteNodeDetailUpdateReqVO updateReqVO);
/**
* 删除工艺路由工序节点配置明细
*
* @param id 编号
*/
Integer deleteProcessrouteNodeDetail(Long id);
/**
* 获得工艺路由工序节点配置明细
*
* @param id 编号
* @return 工艺路由工序节点配置明细
*/
ProcessrouteNodeDetailDO getProcessrouteNodeDetail(Long id);
/**
* 获得工艺路由工序节点配置明细列表
*
* @param ids 编号
* @return 工艺路由工序节点配置明细列表
*/
List<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailList(Collection<Long> ids);
/**
* 获得工艺路由工序节点配置明细分页
*
* @param pageReqVO 分页查询
* @return 工艺路由工序节点配置明细分页
*/
PageResult<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailPage(ProcessrouteNodeDetailPageReqVO pageReqVO);
/**
* 获得工艺路由工序节点配置明细列表, 用于 Excel 导出
*
* @param exportReqVO 查询条件
* @return 工艺路由工序节点配置明细列表
*/
List<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailList(ProcessrouteNodeDetailExportReqVO exportReqVO);
/**
* 导入工艺路由工序节点配置明细主信息
*
* @param datas 导入工艺路由工序节点配置明细主信息列表
* @param mode 导入模式1更新2追加3覆盖
* @param updatePart 是否支持更新
* @return 导入结果
*/
public List<ProcessrouteNodeDetailExcelVO> importProcessrouteNodeDetailList(List<ProcessrouteNodeDetailExcelVO> datas, Integer mode, boolean updatePart);
/**
* 通过图形创建工艺路由工序节点配置明细
* 1删除原有工艺路线的数据
* 2插入新的图形配置数据
* @param listCreateReqVO 创建信息
* @return 编号
*/
Long createProcessrouteNodeDetailBatch(List<ProcessrouteNodeDetailCreateReqVO> listCreateReqVO);
}

122
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/processroutenodedetail/ProcessrouteNodeDetailServiceImpl.java

@ -0,0 +1,122 @@
package com.win.module.mes.service.processroutenodedetail;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.module.mes.controller.processroutenodedetail.vo.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.mes.dal.dataobject.processroutenodedetail.ProcessrouteNodeDetailDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.convert.processroutenodedetail.ProcessrouteNodeDetailConvert;
import com.win.module.mes.dal.mysql.processroutenodedetail.ProcessrouteNodeDetailMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.mes.enums.ErrorCodeConstants.PROCESSROUTE_NODE_DETAIL_IMPORT_LIST_IS_EMPTY;
import static com.win.module.mes.enums.ErrorCodeConstants.PROCESSROUTE_NODE_DETAIL_NOT_EXISTS;
/**
* 工艺路由工序节点配置明细 Service 实现类
*
* @author zhousq
*/
@Service
@Validated
public class ProcessrouteNodeDetailServiceImpl implements ProcessrouteNodeDetailService {
@Resource
private ProcessrouteNodeDetailMapper processrouteNodeDetailMapper;
@Override
public Long createProcessrouteNodeDetail(ProcessrouteNodeDetailCreateReqVO createReqVO) {
// 插入
ProcessrouteNodeDetailDO processrouteNodeDetail = ProcessrouteNodeDetailConvert.INSTANCE.convert(createReqVO);
processrouteNodeDetailMapper.insert(processrouteNodeDetail);
// 返回
return processrouteNodeDetail.getId();
}
@Override
public Integer updateProcessrouteNodeDetail(ProcessrouteNodeDetailUpdateReqVO updateReqVO) {
// 校验存在
validateProcessrouteNodeDetailExists(updateReqVO.getId());
// 更新
ProcessrouteNodeDetailDO updateObj = ProcessrouteNodeDetailConvert.INSTANCE.convert(updateReqVO);
return processrouteNodeDetailMapper.updateById(updateObj);
}
@Override
public Integer deleteProcessrouteNodeDetail(Long id) {
// 校验存在
validateProcessrouteNodeDetailExists(id);
// 删除
return processrouteNodeDetailMapper.deleteById(id);
}
private void validateProcessrouteNodeDetailExists(Long id) {
if (processrouteNodeDetailMapper.selectById(id) == null) {
throw exception(PROCESSROUTE_NODE_DETAIL_NOT_EXISTS);
}
}
@Override
public ProcessrouteNodeDetailDO getProcessrouteNodeDetail(Long id) {
return processrouteNodeDetailMapper.selectById(id);
}
@Override
public List<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailList(Collection<Long> ids) {
return processrouteNodeDetailMapper.selectBatchIds(ids);
}
@Override
public PageResult<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailPage(ProcessrouteNodeDetailPageReqVO pageReqVO) {
return processrouteNodeDetailMapper.selectPage(pageReqVO);
}
@Override
public List<ProcessrouteNodeDetailDO> getProcessrouteNodeDetailList(ProcessrouteNodeDetailExportReqVO exportReqVO) {
return processrouteNodeDetailMapper.selectList(exportReqVO);
}
@Override
public List<ProcessrouteNodeDetailExcelVO> importProcessrouteNodeDetailList(List<ProcessrouteNodeDetailExcelVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PROCESSROUTE_NODE_DETAIL_IMPORT_LIST_IS_EMPTY);
}
List<ProcessrouteNodeDetailExcelVO> errorList = new ArrayList<>();
// datas.forEach(item -> {
// if(errorList == null){
// // 判断如果不存在,在进行插入
// ProcessrouteNodeDetailDO obj = processrouteNodeDetailMapper.selectByCode(item.getCode());
// if (obj == null&& mode != 3) {
// processrouteNodeDetailMapper.insert(ProcessrouteNodeDetailConvert.INSTANCE.convert(item));
// }
// else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新
// ProcessrouteNodeDetailDO processrouteNodeDetailDO = ProcessrouteNodeDetailConvert.INSTANCE.convert(item);
// processrouteNodeDetailDO.setId(obj.getId());
// processrouteNodeDetailMapper.updateById(obj);
// }
// }
// });
return errorList;
}
@Transactional
public Long createProcessrouteNodeDetailBatch(List<ProcessrouteNodeDetailCreateReqVO> listCreateReqVO){
/***/
QueryWrapper queryWrapper=new QueryWrapper<>();
queryWrapper.eq("process_code",listCreateReqVO.get(0).getProcessCode());
int delete = processrouteNodeDetailMapper.delete(queryWrapper);
processrouteNodeDetailMapper.insertBatch(ProcessrouteNodeDetailConvert.INSTANCE.convertListDetail(listCreateReqVO));
return Long.valueOf(delete);
}
}

12
win-module-mes/win-module-mes-biz/src/main/resources/mapper/processroute/ProcessrouteMapper.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.win.module.mes.dal.mysql.processroute.ProcessrouteMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

12
win-module-mes/win-module-mes-biz/src/main/resources/mapper/processroutenodedetail/ProcessrouteNodeDetailMapper.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.win.module.mes.dal.mysql.processroutenodedetail.ProcessrouteNodeDetailMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
Loading…
Cancel
Save