blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java
@@ -39,11 +39,6 @@ * @return åé¡µæ°æ® */ public IPage<ProduceDivisionViewVO> pageQuery(String name, Query query) { LambdaQueryWrapper<ProduceDivision> queryWrapper = new LambdaQueryWrapper<>(); return this.getBaseMapper().pageQuery(Condition.getPage(query),name); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/vo/ProduceDivisionViewVO.java
@@ -22,10 +22,9 @@ @Schema(description = "ç¼å¶å·¥èºåid") private Long programmerId; @Schema(description = "ç¼å¶å·¥èºåå§å") private String programmerName; /** * æ ¡å¯¹å·¥èºåè´¦å· */ @Schema(description = "æ ¡å¯¹å·¥èºåid") private Long checkerId; @Schema(description = "æ ¡å¯¹å·¥èºåå§å") blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -3,4 +3,28 @@ public class FlowContants { public static final String PROGRAM_IDS_KEY = "programids"; /** * å¾å· */ public static final String DRAWING_NO = "drawingNo"; /** * å·¥åºå· */ public static final String PROCESS_NO = "processNo"; /** * å¾å·ç次 */ public static final String DRAWING_NO_EDITION = "drawingNoEdition"; /** * å·¥åºç次 */ public static final String PROCESS_EDITION = "processEdition"; /* æºåºç¼ç */ public static final String MACHINE_CODE = "machineCode"; /** * å·¥èºç次 */ public static final String CRAFT_EDITION = "craftEdition"; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowProgramController.java
@@ -10,6 +10,7 @@ import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.mdm.flow.service.ApproveRecordService; import org.springblade.mdm.flow.service.FlowProgramFileService; import org.springblade.mdm.flow.vo.ApproveRecordVO; import org.springblade.mdm.flow.vo.ProgramUploadVO; import org.springblade.mdm.flow.vo.TaskTraceVO; @@ -39,7 +40,7 @@ private final NcProgramService ncProgramService; private final ProcessProgRefService ncProcessProgRefService; private final ApproveRecordService approveRecordService; private final FlowProgramFileService flowProgramFileService; @PostMapping("/ncupload") @Operation(summary = "ä¸ä¼ ç¨åºæä»¶", description = "ä¸ä¼ ç¨åºæä»¶") @@ -53,11 +54,17 @@ return R.success(); } @GetMapping("/list-by-node") @Operation(summary = "èç¹ç¨åºæä»¶å表", description = "æèç¹å çç¨åºå表ï¼ä» âç¨åºå âåå ¸å¼60") public R<List<NcProgramVO>> listByNode(@Parameter(description="æå±èç¹ID")@RequestParam Long nodeId) { return R.data(ncProgramService.listByNode(nodeId)); } @PostMapping("/remove") @Operation(summary = "å é¤ä¸´æ¶ç¨åºæä»¶", description = "") public R<Boolean> removeFile(Long id) { try { flowProgramFileService.removeById(id); }catch(Exception e) { log.error("å é¤æä»¶å¤±è´¥",e); return R.fail(e.getMessage()); @@ -69,7 +76,7 @@ @Operation(summary = "è·åæä»¶å 容", description = "ä» éææ¬æ ¼å¼çå 容ï¼äºè¿å¶æä»¶å°è¿å空串") public R<String> fileContent(@Parameter(description = "ç¨åºæä»¶id") Long id) { try { return R.data(ncProgramService.getFileContent(id)); return R.data(flowProgramFileService.getFileContent(id)); }catch(Exception e) { log.error("å é¤æä»¶å¤±è´¥",e); return R.fail(e.getMessage()); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/FlowProgramFile.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package org.springblade.mdm.flow.entity; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import org.springblade.core.mp.base.BizEntity; import java.util.Date; /** * æµç¨ç¨åºæä»¶ */ @Setter @Getter @TableName("mdm_flow_program_file") public class FlowProgramFile extends BizEntity { private String processInstanceId; /** * æä»¶å ç¬¦åæ ¼å¼çæä»¶åï¼æ£æ¥æä»¶åéè¦æé¤æ©å±å */ private String name; /** * ossæä»¶å */ private String ossName; /** * ossæä»¶å */ private String programName; /* @Schema(description = "产ååå·") private String productModel; private String drawingNo; @Schema(description = "å·¥èºç次") private String craftEdition; @Schema(description = "å·¥åºå·") private String processNo; private String machineCode; */ } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/FlowProgramFileMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package org.springblade.mdm.flow.mapper; import org.springblade.core.mp.mapper.BladeMapper; import org.springblade.mdm.flow.entity.ApproveRecord; import org.springblade.mdm.flow.entity.FlowProgramFile; import org.springblade.mdm.flow.vo.ApproveRecordVO; import java.util.List; public interface FlowProgramFileMapper extends BladeMapper<FlowProgramFile> { } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/FlowProgramMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ <?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="org.springblade.mdm.flow.mapper.FlowProgramFileMapper"> <resultMap id="BaseResultMap" type="org.springblade.mdm.flow.entity.FlowProgramFile"> <id column="id" property="id"/> <result column="status" property="status"/> <result column="create_time" property="createTime"/> <result column="update_time" property="updateTime"/> <result column="is_deleted" property="isDeleted"/> </resultMap> <sql id="all_columns">id,tenant_id,nc_program_id,process_instances_id,operate_time,operate_result,user_id,user_nickname,status,create_dept,is_deleted,create_time,create_user,update_time,update_user</sql> <select id="listByNcProgramId" resultType="org.springblade.mdm.flow.vo.ApproveRecordVO"> select <include refid="all_columns"/> FROM mdm_approve_record WHERE nc_program_id = ${ncProgramId} and is_deleted = 0 order by create_time desc </select> </mapper> blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -3,7 +3,10 @@ import lombok.AllArgsConstructor; import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; import org.springblade.mdm.flow.constants.FlowContants; import org.springframework.stereotype.Service; import java.util.Map; @AllArgsConstructor @Service @@ -23,4 +26,26 @@ return processInstance.getProcessDefinitionKey(); } /** * 仿µç¨åéè·ååèµ·æµç¨çæ å½¢ * @param processInstanceId * @return */ public FlowProgramProperties getProgramProperties(String processInstanceId){ FlowProgramProperties programProperties = new FlowProgramProperties(); Map<String, Object> vars = runtimeService.getVariables(processInstanceId); programProperties.setDrawingNo(String.valueOf(vars.get(FlowContants.DRAWING_NO))); programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowContants.DRAWING_NO_EDITION))); programProperties.setProcessNo(String.valueOf(vars.get(FlowContants.PROCESS_NO))); programProperties.setProcessEdition(String.valueOf(vars.get(FlowContants.PROCESS_EDITION)));//å·¥åºç次 programProperties.setMachineCode(String.valueOf(vars.get(FlowContants.MACHINE_CODE))); //æ°æ®å¤çåç§°ä¸ºçæ¬¡ä»¥åï¼é¶ä»¶å·å å·¥åºå·ï¼YZL4-1100-01-50 é¶ç»ä»¶å·ï¼YZL4-1100-01 å·¥åºå· 50 programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION))); return programProperties; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package org.springblade.mdm.flow.service; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.oss.OssTemplate; import org.springblade.core.oss.model.BladeFile; import org.springblade.mdm.flow.entity.FlowProgramFile; import org.springblade.mdm.flow.mapper.FlowProgramFileMapper; import org.springblade.mdm.flow.vo.ProgramUploadVO; import org.springblade.mdm.program.entity.NcProgram; import org.springblade.mdm.program.service.ProcessProgRefService; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Map; /** * æµç¨ç¨åºå¤çï¼å æ¬ä¸ä¼ ï¼æ¥è¯¢å±ç¤º * * @author yangys */ @Slf4j @Service @AllArgsConstructor public class FlowProgramFileService extends BizServiceImpl<FlowProgramFileMapper, FlowProgramFile> { private final OssTemplate ossTemplate; private final RuntimeService runtimeService; private final FlowCommonService flowCommonService; public void uploadFlowProgramFile(ProgramUploadVO uploadVO) { Map<String, Object> vars = runtimeService.getVariables(uploadVO.getProcessInstanceId()); checkFilenames(uploadVO.getFiles(),flowCommonService.getProgramProperties(uploadVO.getProcessInstanceId())); // //BladeFile bfile = ossTemplate.putFile(uploadVO.getFile()); //String link = bfile.getLink(); //ä¿åprofame /* NcProgram prog = new NcProgram(); prog.setCode(generageCode()); prog.setName(file.getOriginalFilename()); prog.setNcNodeId(uploadVO.getNodeId()); prog.setOssName(bfile.getName()); prog.setDrawingNo(uploadVO.getDrawingNo()); prog.setProcessEdition(uploadVO.getProcessEdition()); prog.setIsLastEdition(1); */ } public void checkFilenames(MultipartFile[] files,FlowProgramProperties programProperties){ for (MultipartFile file : files){ checkFilename(file.getOriginalFilename(),programProperties); } } void checkFilename(String filename,FlowProgramProperties programProperties){ //ç¨åºåç§°ï¼é¶ä»¶å·å å·¥åºå·ï¼æä»¶ååºè¯¥ä»¥æ¤å¼å¤´ String expectedProgramName = programProperties.getDrawingNo()+"-"+programProperties.getProcessNo(); if(!StringUtils.startsWith(filename,expectedProgramName)){ throw new ServiceException("ç¨åºæä»¶åä¸åæ³ï¼åºä¸ºï¼"+expectedProgramName+"-"+programProperties.getCraftEdition()+"-[段æ°]-[段å·].[æä»¶æ©å±å]"); } } /** * è·åæä»¶å 容 * @param id * @return */ public String getFileContent(Long id) { String result =""; FlowProgramFile programFile = this.getById(id); //if(prog.getIsTextFile()!=null && programFile.getIsTextFile()){ String fileName = programFile.getOssName(); try (InputStream inputStream = ossTemplate.statFileStream(fileName)) { result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException(e); } //}else{ // result = "éææ¬æ ¼å¼æä»¶"; //} return result; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package org.springblade.mdm.flow.service; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDate; /** * 派工æµç¨çç¨åºæ å½¢ */ @Data public class FlowProgramProperties { @Schema(description = "é¶ç»ä»¶/å¾å·") private String drawingNo; @Schema(description = "å¾å·ç次/è®¾è®¡çæ¬¡") private String drawingNoEdition; @Schema(description = "å·¥åºå·") private String processNo; @Schema(description = "å·¥åºåç§°") private String processName; @Schema(description = "产ååå·") private String productModel; @Schema(description = "å·¥åºç次") private String processEdition; @Schema(description = "å·¥èºç次") private String craftEdition; @Schema(description = "设å¤ç¼å·") private String machineCode; @Schema(description = "设å¤åå·") private String machineMode; @Schema(description = "计åé宿¶é´(天)") private Integer planLockDays; @Schema(description = "计åå¼å·¥æ¶é´") private LocalDate planStartTime; }