30 changed files with 1706 additions and 4 deletions
@ -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); |
|||
} |
|||
} |
@ -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; |
|||
|
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
|||
|
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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; |
|||
} |
@ -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 { |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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); |
|||
} |
@ -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); |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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); |
|||
} |
|||
|
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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); |
|||
} |
@ -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; |
|||
} |
|||
} |
|||
} |
@ -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); |
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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> |
@ -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…
Reference in new issue