| | |
| | | /** |
| | | * ç¨åºæä»¶å æ£å |
| | | */ |
| | | public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\w\\-]+)-([0-9a-zA-Z]+)-([\\u4e00-\\u9fa5a-zA-Z0-9]+)-(\\d+)-(\\d+)-?([Pp]\\d+)?(\\.[a-zA-Z]+)?$"); |
| | | public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\u4e00-\\u9fa5\\w\\-]+)-([0-9a-zA-Z]+)-([\\u4e00-\\u9fa5a-zA-Z0-9]+)-(\\d+)-(\\d+)-?([Pp]\\d+)?(\\.[a-zA-Z]+)?$"); |
| | | |
| | | //public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("[\\w\\-]+\\-\\w+\\-\\w+"); |
| | | public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\w\\-]+)-[0-9a-zA-Z]+-[0-9a-zA-Z]+"); |
| | | public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\u4e00-\\u9fa5\\w\\-]+)-[0-9a-zA-Z]+-[\\u4e00-\\u9fa5a-zA-Z0-9]+"); |
| | | } |
| | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å离ååºåå®ææ°æ®å¤çå¨ï¼åè½ï¼æ¢³çæ èç¹ |
| | | * ä¸´æ¶æ´æ¹ååºåå®ææ°æ®å¤çå¨ï¼åè½ï¼æ¢³çæ èç¹ |
| | | */ |
| | | @Slf4j |
| | | @Component("deviationCureFinishDataHandler") |
| | |
| | | private NcNodeService nodeService; |
| | | |
| | | /** |
| | | * cureFinishOperateTaskè°ç¨ï¼å离ååä¼ å®¡æ¹å®æå¤çä¸å¡ |
| | | * cureFinishOperateTaskè°ç¨ï¼ä¸´æ¶æ´æ¹ååä¼ å®¡æ¹å®æå¤çä¸å¡ |
| | | * @param props 屿§ |
| | | */ |
| | | public void handleData(FlowProgramProperties props) { |
| | | // æ§è¡ä¸å¡é»è¾ |
| | | NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, props.getProcessInstanceId()).one(); |
| | | pkgNode.lock("å离ååä¼ éå®"); |
| | | pkgNode.lock("ä¸´æ¶æ´æ¹ååä¼ éå®"); |
| | | pkgNode.setIsLastEdition(0); |
| | | nodeService.updateById(pkgNode); |
| | | |
| | |
| | | |
| | | addNewProgramNode(newPkgNode,props.getProcessInstanceId()); |
| | | |
| | | log.info("å离åä¼ Listener宿"); |
| | | log.info("ä¸´æ¶æ´æ¹ååä¼ Listener宿"); |
| | | } |
| | | |
| | | /** |
| | |
| | | cureNode.upgradeVersionNumber(); |
| | | } |
| | | |
| | | //nodeService.save(cureNode); |
| | | |
| | | return cureNode; |
| | | } |
| | | /** |
| | |
| | | byte[] bytes = IOUtils.toByteArray(ins); |
| | | ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); |
| | | |
| | | //InputStream finishedStream = programAnnotationService.setGHAnnotation(byteInputStream,controlSystem,annoDicts); |
| | | List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList(); |
| | | AnnotationProperties annoProps = config.getConfigMap().get(controlSystem); |
| | | if(annoProps == null){ |
| | | annoProps = AnnotationProperties.getDefault(); |
| | | } |
| | | InputStream finishedStream =AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList); |
| | | InputStream finishedStream =AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, AnnotationUtil.GH, annoProps.getStatusLineIndex(), controlSystem, annoDictList); |
| | | try(finishedStream) { |
| | | finishedStream.reset(); |
| | | BladeFile bfile = ossTemplate.putFile(flowProgramFile.getName(), finishedStream); |
| | |
| | | import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.service.NcNodeAutoCreateService; |
| | | import org.springblade.mdm.program.service.NcNodeHisService; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springblade.mdm.program.service.programannotation.*; |
| | | import org.springblade.mdm.utils.ProgramFileNameParser; |
| | |
| | | private ListenerHelper listenerHelper; |
| | | @Autowired |
| | | private OssTemplate ossTemplate; |
| | | @Autowired |
| | | private NcNodeHisService ncNodeHisService; |
| | | |
| | | /** |
| | | * DispatchFinishListenerä¸è°ç¨ |
| | |
| | | ncNodeService.updateById(packageNode); |
| | | |
| | | //çæ¬å·æ ¹æ®é¶ç»ä»¶å·+å·¥åºå·ï¼å·¥åºçæ¬¡ï¼æºåºç» ç´æ¥æ¥è¯¢æ°éï¼+1è·å |
| | | Integer newVersion = ncNodeService.calculateVersionNumber(packageNode); |
| | | packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion); |
| | | Integer newVersion = ncNodeHisService.calculateVersionNumber(packageNode); |
| | | packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props); |
| | | packageNode.setVersionNumber(newVersion); |
| | | ncNodeService.updateById(packageNode); |
| | | }else{ |
| | | //å¯ç¨ï¼ç©ºåçï¼ä¿®æ¹å
¶å·¥åºç次ï¼ï¼åæ¥çèç¹æ¸
é¤ |
| | | moveToNewProcessEdition(packageNode,props); |
| | | |
| | | //æ´æ°å·²åºåçï¼ååãä¸åæºåºç»çç¨åºä¸ºéå®ç¶æ |
| | | ncNodeService.lockSameNameOtherMachineGroupProgramPackage(packageNode); |
| | | } |
| | | }else{ |
| | | //æ®éè¯å |
| | | packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,1); |
| | | //æ®éè¯å/ä¸´æ¶æ´æ¹å |
| | | packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props); |
| | | Integer newVersion = ncNodeHisService.calculateVersionNumber(packageNode); |
| | | long hisSerial = ncNodeService.calculateHistorySerial(packageNode); |
| | | packageNode.setHisSerial(hisSerial); |
| | | packageNode.setVersionNumber(newVersion); |
| | | ncNodeService.updateById(packageNode); |
| | | } |
| | | |
| | |
| | | this.ncNodeService.updateById(packageNode); |
| | | Machine machine = machineService.getByCode(packageNode.getMachineCode()); |
| | | //ç§»å¨ç¨åºèç¹ |
| | | //List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList(); |
| | | List<NcNode> programNodes = ncNodeService.getProgramFilesByPackageId(packageNode.getId()); |
| | | for(NcNode programNode : programNodes){ |
| | | FlowProgramFile progFile = this.flowProgramFileService.getById(programNode.getFlowProgramFileId()); |
| | |
| | | newPackageNode.setIsLocked(0); |
| | | newPackageNode.setIsLastEdition(1); |
| | | |
| | | Integer newVersion = ncNodeService.calculateVersionNumber(oldPackageNode); |
| | | Integer newVersion = nodeHisService.calculateVersionNumber(oldPackageNode); |
| | | newPackageNode.setVersionNumber(newVersion); |
| | | newPackageNode.setProcessInstanceId(processInstanceId); |
| | | ncNodeService.save(newPackageNode); |
| | |
| | | |
| | | |
| | | if(programPackage.getDeviation() != null) { |
| | | vars.put(FlowVariableConstant.MY_PROCESS_NAME, "å离åä¼ "); |
| | | vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-å离åä¼ ");//èªå¨å¢å æ é¢ |
| | | vars.put(FlowVariableConstant.MY_PROCESS_NAME, "ä¸´æ¶æ´æ¹ååä¼ "); |
| | | vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-ä¸´æ¶æ´æ¹ååä¼ ");//èªå¨å¢å æ é¢ |
| | | }else { |
| | | vars.put(FlowVariableConstant.MY_PROCESS_NAME, "åºåæµç¨"); |
| | | vars.put(FlowVariableConstant.TITLE,programPackage.getName()+"-"+programPackage.getProcessEdition()+"-åºå");//èªå¨å¢å æ é¢ |
| | |
| | | vars.put(FlowConstant.NODE_ID, programPackageNode.getId()); |
| | | vars.put(FlowVariableConstant.WORKSHOP,nodeDeptQueryService.getWorkshopNameByMachineCode(programPackageNode.getMachineCode())); |
| | | |
| | | if(programPackageNode.isDeviationProgram()) { |
| | | vars.put(FlowVariableConstant.DEVIATION, programPackageNode.getDeviation()); |
| | | } |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | package org.springblade.mdm.gkw.task.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.excel.util.ExcelUtil; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.mdm.commons.service.OssFileCommonService; |
| | | import org.springblade.mdm.gkw.task.service.MachineBackTaskService; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO; |
| | | import org.springblade.mdm.machinefile.entity.FileSendRecord; |
| | | import org.springblade.mdm.machinefile.service.FileSendRecordService; |
| | | import org.springblade.mdm.machinefile.vo.FileSendRecordExcelVO; |
| | | import org.springblade.mdm.machinefile.vo.FileSendRecordQueryVO; |
| | | import org.springblade.mdm.machinefile.vo.FileSendRecordVO; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æºåºåä¼ ä»»å¡ |
| | | * |
| | | * @author yangys |
| | | */ |
| | | @NonDS |
| | | @RestController |
| | | @RequestMapping("/gkw/machinebacktask") |
| | | @Tag(name = "æºåºåä¼ ä»»å¡", description = "æºåºåä¼ ä»»å¡") |
| | | @Slf4j |
| | | public class MachineBackTaskController { |
| | | @Autowired |
| | | private MachineBackTaskService machineBackTaskService; |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "æºåºåä¼ ä»»å¡å表", description = "æºåºåä¼ ä»»å¡å表") |
| | | public R<IPage<MachineBackTaskVO>> page(MachineBackTaskQueryVO query) { |
| | | if(query.getCreateTimeEnd()!=null){ |
| | | query.setCreateTimeEnd(query.getCreateTimeEnd().plusDays(1)); |
| | | } |
| | | return R.data(machineBackTaskService.pageQuery(query)); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.mdm.gkw.task.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import org.apache.commons.io.FileUtils; |
| | | import org.springblade.core.mp.base.BizEntity; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * æºåºåä¼ ä»»å¡ |
| | | */ |
| | | @Setter |
| | | @Getter |
| | | @TableName("mdm_machine_back_task") |
| | | public class MachineBackTask extends BizEntity { |
| | | /** |
| | | * ä»»å¡ç±»åï¼å·¥èºç¼å¶ä»»å¡ |
| | | */ |
| | | private static final long TASK_TYPE_PROGRAM = 1; |
| | | /** |
| | | * ä»»å¡ç±»åï¼ç°åºç¼å¶ä»»å¡ |
| | | */ |
| | | private static final long TASK_TYPE_ON_MACHINE = 2; |
| | | /** |
| | | * æä»¶å |
| | | */ |
| | | private String programName; |
| | | /** |
| | | * æå±æºåº |
| | | */ |
| | | private String machineCode; |
| | | |
| | | /** |
| | | * ä¸´æ¶æ´æ¹å |
| | | */ |
| | | private String deviation; |
| | | /** |
| | | * ä»»å¡ç±»å |
| | | */ |
| | | private String taskType; |
| | | |
| | | private Date finishTime; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.mdm.gkw.task.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springblade.core.mp.mapper.BladeMapper; |
| | | import org.springblade.mdm.gkw.task.entity.MachineBackTask; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO; |
| | | import org.springblade.mdm.machinefile.entity.FileSendRecord; |
| | | import org.springblade.mdm.machinefile.vo.FileSendRecordQueryVO; |
| | | import org.springblade.mdm.machinefile.vo.FileSendRecordVO; |
| | | |
| | | public interface MachineBackTaskMapper extends BladeMapper<MachineBackTask> { |
| | | /** |
| | | * æä»¶ä¸åè®°å½å页æ¥è¯¢ |
| | | * @param page åé¡µä¿¡æ¯ |
| | | * @param query æ¥è¯¢åæ° |
| | | * @return åé¡µæ°æ® |
| | | */ |
| | | IPage<MachineBackTaskVO> pageQuery(IPage<MachineBackTaskVO> page, @Param("query") MachineBackTaskQueryVO query); |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.gkw.task.mapper.MachineBackTaskMapper"> |
| | | |
| | | |
| | | <!--æä»¶è®°å½æ¥è¯¢--> |
| | | |
| | | <select id="pageQuery" resultType="org.springblade.mdm.gkw.task.vo.MachineBackTaskVO"> |
| | | select t.id,t.program_name,t.machine_code,t.task_type,t.finish_time,t.create_time,t.status,t.update_time,u.name create_user_name |
| | | from mdm_machine_back_task t left join blade_user u on t.create_user=u.id |
| | | <where> |
| | | t.is_deleted=0 |
| | | <if test="query.status!=null and query.status!=''"> |
| | | and t.status = #{query.status} |
| | | </if> |
| | | <if test="query.programName!=null and query.programName!=''"> |
| | | <bind name="pname" value="'%'+query.programName+'%'"/> |
| | | and t.program_name like #{pname} |
| | | </if> |
| | | |
| | | <if test="query.machineCode!=null and query.machineCode!=''"> |
| | | <bind name="machineCode" value="'%'+query.machineCode+'%'"/> |
| | | and t.machine_code like #{machineCode} |
| | | </if> |
| | | <if test="query.createTimeBegin!=null"> |
| | | and t.create_time >=#{query.createTimeBegin} |
| | | </if> |
| | | <if test="query.createTimeEnd!=null"> |
| | | and t.create_time <=#{query.createTimeEnd} |
| | | </if> |
| | | |
| | | </where> |
| | | order by t.create_time desc |
| | | </select> |
| | | </mapper> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | package org.springblade.mdm.gkw.task.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.mp.base.BizServiceImpl; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.mdm.gkw.task.entity.MachineBackTask; |
| | | import org.springblade.mdm.gkw.task.mapper.MachineBackTaskMapper; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskQueryVO; |
| | | import org.springblade.mdm.gkw.task.vo.MachineBackTaskVO; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * æºåºæä»¶ |
| | | * |
| | | * @author yangys |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class MachineBackTaskService extends BizServiceImpl<MachineBackTaskMapper, MachineBackTask> { |
| | | |
| | | @Transactional(readOnly = true) |
| | | public IPage<MachineBackTaskVO> pageQuery(MachineBackTaskQueryVO query) { |
| | | return baseMapper.pageQuery(Condition.getPage(query),query); |
| | | } |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.mdm.gkw.task.vo; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.time.LocalDate; |
| | | |
| | | @Schema(description = "å»ç©¿åä¼ ä»»å¡æ¥è¯¢å¯¹è±¡") |
| | | @Setter |
| | | @Getter |
| | | public class MachineBackTaskQueryVO extends Query { |
| | | @Schema(description = "æä»¶åç§°") |
| | | private String programName; |
| | | @Schema(description = "æºåºç¼ç ") |
| | | private String machineCode; |
| | | @Schema(description = "å建æ¶é´å¼å§") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate createTimeBegin; |
| | | @Schema(description = "å建æ¶é´æªæ¢") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private LocalDate createTimeEnd; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.mdm.gkw.task.vo; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Getter; |
| | | import lombok.Setter; |
| | | import org.springblade.mdm.commons.vo.BaseVO; |
| | | |
| | | @Schema(description = "æä»¶ä¸åè®°å½VO") |
| | | @Setter |
| | | @Getter |
| | | public class MachineBackTaskVO extends BaseVO { |
| | | @Schema(description = "ç¨åºåç§°") |
| | | private String programName; |
| | | @Schema(description = "æºåºç¼å·") |
| | | private String machineCode; |
| | | |
| | | @Schema(description = "ä»»å¡ç±»å") |
| | | private int taskType; |
| | | |
| | | } |
| | |
| | | query.setCurrent(1); |
| | | query.setSize(Integer.MAX_VALUE); |
| | | |
| | | //IPage<MachineBackFileVO> pages = service.pageQuery(query); |
| | | IPage<FileSendRecordVO> pages = fileSendRecordService.pageQuery(query); |
| | | List<FileSendRecordExcelVO> list = new ArrayList<>(); |
| | | pages.getRecords().forEach(m ->{ |
| | |
| | | * 对象å卿件åï¼å¤æ¥ |
| | | */ |
| | | private String ossName; |
| | | |
| | | /** |
| | | * ç¨åºç¶æ |
| | | */ |
| | | private String programStatus; |
| | | /** |
| | | * çææä»¶å¤§å°çæ¾ç¤ºææ¬ |
| | | * @return æ¾ç¤ºææ¬ |
| | |
| | | return; |
| | | } |
| | | |
| | | AnnotationProperties annoProps = AnnotationProperties.getDefault(); |
| | | try(InputStream fileIns = Files.newInputStream(checkFilePath);) { |
| | | int excepType = MachineFile.EXCEPTION_OK; |
| | | ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(fileIns)); |
| | |
| | | }else{ |
| | | //æ£æ¥æ¯å¦å¹é
ä¸åè®°å½çæ®µæ° |
| | | //æ£è´3ç§ä½ä¸ºæ¥è¯¢æ¶é´ |
| | | Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000); |
| | | Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000); |
| | | //Date beginTime = new Date(machineFile.getFileCreateTime().getTime()-3000); |
| | | //Date endTime = new Date(machineFile.getFileCreateTime().getTime()+3000); |
| | | String likeStr; |
| | | if(StringUtils.isNotBlank(progNameVO.getLgPart())){ |
| | | likeStr = prefix +"%P%"; |
| | | }else{ |
| | | likeStr = prefix; |
| | | } |
| | | Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery() |
| | | .eq(FileSendRecord::getMachineCode,machineFile.getMachineCode()) |
| | | .likeRight(FileSendRecord::getName,prefix).between(FileSendRecord::getCreateTime,beginTime,endTime).oneOpt(); |
| | | .likeRight(FileSendRecord::getName,likeStr).last("limit 1") |
| | | .orderByDesc(FileSendRecord::getCreateTime).oneOpt(); |
| | | |
| | | boolean matchSendRecord;//æä»¶æ¯å¦æä¸åè®°å½ |
| | | if(optFile.isPresent()){ |
| | |
| | | |
| | | if(!matchSendRecord){//妿æä»¶æªä¸åè¿ï¼æ¥çæ¯å¦æç°åºç¼ç¨è®°å½ |
| | | byteStream.reset(); |
| | | //TODO ä¸é¢è¿äºåºè¯¥é½æ²¡æï¼å 为æ¶ç°åºç¼ç¨ |
| | | |
| | | /* |
| | | String planStatusLine = AnnotationUtil.removeAnnotation(machine.getControlSystem(),FileContentUtil.readLineAt(byteStream,annoProps.getStatusLineIndex()),programAnnotationService.getAnnotionDictList()); |
| | | |
| | | String lgNo;//æ´æ¹åå· |
| | |
| | | lgNo = AnnotationUtil.removeAnnotation(machine.getControlSystem(), lgLine, programAnnotationService.getAnnotionDictList()); |
| | | }else{ |
| | | lgNo = null; |
| | | } |
| | | }*/ |
| | | |
| | | String devSerial = null; |
| | | if(StringUtils.isNotBlank(progNameVO.getLgPart())){ |
| | | devSerial = progNameVO.getLgPart().substring(1); |
| | | } |
| | | long progOnMachineCount = programOnMachineService.lambdaQuery() |
| | | .eq(ProgramOnMachine::getDrawingNo,progNameVO.getDrawingNo()) |
| | | .eq(ProgramOnMachine::getProcessNo,progNameVO.getProcessNo()) |
| | | .eq(ProgramOnMachine::getProcessEdition,progNameVO.getProcessEdition()) |
| | | .eq(lgNo != null,ProgramOnMachine::getDeviation,lgNo)//TODO ä¸´æ¶æ´æ¹ååºå·å¹é
|
| | | |
| | | .eq(devSerial != null,ProgramOnMachine::getDeviationSerial,devSerial) |
| | | .eq(ProgramOnMachine::getMachineCode,machineFile.getMachineCode()).count(); |
| | | |
| | | if(progOnMachineCount == 0){//æ ç°åºç¼ç¨è®°å½ |
| | |
| | | */ |
| | | public void mdmFileAccept(String ids) throws IOException { |
| | | |
| | | List<FileSendRecord> importedRecords = new ArrayList<>(); |
| | | List<String> idList = Func.toStrList(ids); |
| | | |
| | | String dictStr = bladeRedis.get(getFileKey()); |
| | |
| | | record.setOssName(bFile.getName()); |
| | | } |
| | | fileSendRecordService.save(record); |
| | | |
| | | importedRecords.add(record); |
| | | } |
| | | |
| | | } |
| | |
| | | //å å·¥æºåºèç¹ |
| | | return createNodeIfNotExists(programProperties.getMachineGroupCode(),NcNode.TYPE_MACHINE_GROUP, processEditionNode,programProperties,null); |
| | | } |
| | | /* |
| | | @Transactional |
| | | public NcNode createNodeTreeToProcessEdition(FlowProgramProperties programProperties) { |
| | | NcNode root; |
| | | if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){ |
| | | if(Func.isEmpty(programProperties.getDeviation()) || |
| | | (FlowContants.Y.equals(programProperties.getHasCuredProgram()) && FlowContants.N.equals(programProperties.getCureProgramUseable()))){ |
| | | //æ®éè¯åï¼æè
æåºåä¸å¯ç¨ï¼å»ºç«è¯åèç¹ |
| | | //è¯åæ ¹èç¹ |
| | | root = rootNodeByName(TRY_NAME); |
| | | if (root == null) { |
| | | root = createTryNode(); |
| | | } |
| | | }else{ |
| | | //æå离 |
| | | root = rootNodeByName(DEVIATION_NAME); |
| | | if(root == null){ |
| | | root = createDeviationNode(); |
| | | } |
| | | } |
| | | }else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){ |
| | | root = rootNodeByName(CURE_NAME); |
| | | if(root == null){ |
| | | root = createCureNode(); |
| | | } |
| | | }else{ |
| | | throw new ServiceException("æµç¨å®ä¹ä¸å¨èå´å
"); |
| | | } |
| | | //å建产ååå·èç¹ |
| | | NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties,null); |
| | | //é¶ç»ä»¶å·èç¹ |
| | | NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties,null); |
| | | //å·¥èºç次èç¹ |
| | | //NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties); |
| | | //å·¥åºå·è |
| | | NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, drawingNoNode,programProperties,null); |
| | | //å·¥åºç次èç¹ |
| | | NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties,null); |
| | | //å å·¥æºåºèç¹ |
| | | return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties,null); |
| | | } |
| | | */ |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨ä¿¡æ¯ï¼èªå¨å建å个èç¹,å
æ¬ç¨åºèç¹ |
| | | * @param programProperties ç¨åºå±æ§ |
| | | * @return ç¨åºå
èç¹å®ä¾ |
| | | */ |
| | | @Transactional |
| | | public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties,Integer versionNumber) { |
| | | //,int rootNodeCatgory = 1:è¯åï¼2åºåï¼3å离 |
| | | NcNode programPkdNode = createTreeToPackage(programProperties,versionNumber); |
| | | public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties) { |
| | | NcNode programPkdNode = createTreeToPackage(programProperties); |
| | | //å é¤ä¹åå建è¿çç¨åºæä»¶èç¹(å 为éå¤å¨ç¼å¶èç¹å®¡æ¹)ï¼é¿å
é夿°æ® |
| | | ncNodeService.deleteSubNodes(programPkdNode.getId()); |
| | | //ncNodeService.deleteSubNodes(programPkdNode.getId());//del 0923 18:07 |
| | | |
| | | List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list(); |
| | | List<FlowProgramFile> programFiles = flowProgramFileService.listByProcessInstanceId(programProperties.getProcessInstanceId()); |
| | | for (FlowProgramFile programFile : programFiles) { |
| | | createProgramFileNode(programFile, programPkdNode,versionNumber);//æææä»¶å
æ¬ç¨åºåå
¶ä»ï¼é½éè¦å»ºç«èç¹ |
| | | createProgramFileNode(programFile, programPkdNode);//æææä»¶å
æ¬ç¨åºåå
¶ä»ï¼é½éè¦å»ºç«èç¹ |
| | | } |
| | | |
| | | return programPkdNode; |
| | |
| | | * @param programPkdNode ç¨åºå
å èç¹ï¼ç¨åºèç¹ç ä¸çº§ |
| | | * @param versionNumber çæ¬å· |
| | | */ |
| | | private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, Integer versionNumber) { |
| | | private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode) { |
| | | //æ¤å¤åºé¿å
éå¤å建 |
| | | |
| | | NcNode node = new NcNode(); |
| | |
| | | node.setIsLastEdition(1); |
| | | |
| | | node.setFlowProgramFileId(programFile.getId()); |
| | | if(versionNumber == null){ |
| | | node.setVersionNumber(1); |
| | | }else { |
| | | node.setVersionNumber(versionNumber); |
| | | } |
| | | |
| | | node.setParentId(programPkdNode.getId()); |
| | | node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId()); |
| | | |
| | |
| | | * @return ç¨åºå
åèç¹ï¼ææ«çº§ï¼ |
| | | */ |
| | | @Transactional |
| | | public NcNode createTreeToPackage(FlowProgramProperties programProperties,Integer versionNumber) { |
| | | public NcNode createTreeToPackage(FlowProgramProperties programProperties) { |
| | | NcNode machineGroupNode = createNodeTreeToMachineGroup(programProperties); |
| | | //NcNode processEditionNode = this.ncNodeService.getById(machineCodeNode.getParentId()); |
| | | //è·åå·¥åºç次ä¸å
¶ä»æºåºåï¼åå¨åå é¤ |
| | | /* |
| | | ncNodeService.lambdaUpdate().eq(NcNode::getNodeType,NcNode.TYPE_MACHINE_GROUP) |
| | | .eq(NcNode::getParentId,processEditionNode.getId()).eq(NcNode::getIsLastEdition,1) |
| | | .ne(NcNode::getName,machineCodeNode.getName()).remove(); |
| | | |
| | | */ |
| | | |
| | | //ä¿æå å·¥æºåºæ¯ææ°ä¸åä»»å¡çæºåºï¼ä¸æ¯æ°å»ºä¸ä¸ªæºåºèç¹ï¼æåå·¥åºçæ¬¡ä¸æ¯å¦æå
¶ä»çæºåºï¼é¶ä»¶å·ä¸è´ï¼å·¥åºå·ï¼å·¥åºç次ä¸è´ï¼ |
| | | //è·å |
| | | //ç¨åºå
å卿ºåºç»ä¸çº§ 20250913 |
| | | String programPkgName = NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo(),programProperties.getProcessEdition()); |
| | | return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineGroupNode,programProperties,versionNumber); |
| | | return createProgramPackageNode(programProperties,machineGroupNode); |
| | | |
| | | //return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineGroupNode,programProperties,versionNumber); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * å建ç¨åºå
åèç¹ |
| | | * @param programProperties |
| | | * @param parentNode |
| | | * @return |
| | | */ |
| | | NcNode createProgramPackageNode(FlowProgramProperties programProperties,NcNode parentNode){ |
| | | NcNode node = new NcNode(); |
| | | |
| | | node.setNodeType(NcNode.TYPE_PROGRAM_PACKAGE); |
| | | node.setName(NcNodeService.genProgramName(programProperties.getDrawingNo(),programProperties.getProcessNo(),programProperties.getProcessEdition())); |
| | | node.setProcessInstanceId(programProperties.getProcessInstanceId()); |
| | | node.setDrawingNo(programProperties.getDrawingNo()); |
| | | node.setDrawingNoEdition(programProperties.getDrawingNoEdition()); |
| | | node.setCraftEdition(programProperties.getCraftEdition()); |
| | | node.setProcessNo(programProperties.getProcessNo()); |
| | | node.setProcessEdition(programProperties.getProcessEdition()); |
| | | node.setProcessName(programProperties.getProcessName()); |
| | | node.setMachineCode(programProperties.getMachineCode()); |
| | | node.setMachineGroupCode(programProperties.getMachineGroupCode()); |
| | | node.setProductModel(programProperties.getProductModel()); |
| | | |
| | | node.setDeviation(programProperties.getDeviation()); |
| | | node.setProgramNo(programProperties.getProgramNo()); |
| | | //node.setVersionNumber(versionNumber); |
| | | |
| | | node.setParentId(parentNode.getId()); |
| | | node.setParentIds(parentNode.subNodeParentIds()); |
| | | |
| | | ncNodeService.save(node); |
| | | |
| | | return node; |
| | | } |
| | | /** |
| | | * ä¸åå¨åå建èç¹ |
| | | * @param name èç¹åç§° |
| | | * @param nodeType èç¹ç±»å |
| | |
| | | ncNodeService.deleteOldEditionNodeData(); |
| | | } |
| | | |
| | | /** |
| | | * 计ç®çæ¬å· |
| | | * @param pkgNode èç¹ |
| | | * @return çæ¬å· |
| | | */ |
| | | public int calculateVersionNumber(NcNode pkgNode) { |
| | | NcNodeHis nodeHis = this.lambdaQuery().eq(NcNodeHis::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNodeHis::getDrawingNo,pkgNode.getDrawingNo()) |
| | | .eq(NcNodeHis::getProcessNo,pkgNode.getProcessNo()).eq(NcNodeHis::getProcessEdition,pkgNode.getProcessEdition()) |
| | | .eq(NcNodeHis::getMachineGroupCode,pkgNode.getMachineGroupCode()).last("limit 1").one(); |
| | | |
| | | if(nodeHis != null && nodeHis.getVersionNumber()!=null){ |
| | | return nodeHis.getVersionNumber()+1; |
| | | }else{ |
| | | //以徿²¡æï¼çæä¸ä¸ªæ°ç |
| | | return 1; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢èç¹çåå²å表ï¼èç¹çä¸çº§èç¹âç¨åºå
åâå 为åå¨å¤ä¸ªçæ¬ï¼æä»¥åå²è®°å½ä¹éè¦æ ¹æ®ä¸åçæ¬ç¨åºå
åè¿è¡æ¥è¯¢ï¼ |
| | |
| | | } |
| | | } |
| | | |
| | | public int calculateVersionNumber(NcNode pkgNode) { |
| | | NcNode node = this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNode::getDrawingNo,pkgNode.getDrawingNo()) |
| | | .eq(NcNode::getProcessNo,pkgNode.getProcessNo()).eq(NcNode::getProcessEdition,pkgNode.getProcessEdition()) |
| | | .eq(NcNode::getMachineGroupCode,pkgNode.getMachineGroupCode()).last("limit 1").one(); |
| | | |
| | | if(node != null && node.getVersionNumber()!=null){ |
| | | return node.getVersionNumber()+1; |
| | | }else{ |
| | | //以徿²¡æï¼çæä¸ä¸ªæ°ç |
| | | return 1; |
| | | } |
| | | } |
| | | /** |
| | | * çæç¨åºå
å/ç¨åºåç§° |
| | | * @param drawingNo é¶ç»ä»¶å· |
| | |
| | | */ |
| | | public NcNode getLastCuredProgramWithoutProcessEdition(String drawingNo, String processNo, String machineCode) { |
| | | Machine machine = machineService.getByCode(machineCode); |
| | | List<Machine> sameGroupMachines = machineService.lambdaQuery().eq(Machine::getMachineGroupCode,machine.getMachineGroupCode()).list(); |
| | | List<String> machineCodesInGroup = sameGroupMachines.stream().map(Machine::getCode).toList(); |
| | | //List<Machine> sameGroupMachines = machineService.lambdaQuery().eq(Machine::getMachineGroupCode,machine.getMachineGroupCode()).list(); |
| | | //List<String> machineCodesInGroup = sameGroupMachines.stream().map(Machine::getCode).toList(); |
| | | List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE) |
| | | .eq(NcNode::getDrawingNo, drawingNo).eq(NcNode::getProcessNo, processNo) |
| | | .likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1) |
| | | .in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup) |
| | | .eq(NcNode::getMachineGroupCode,machine.getMachineGroupCode()) |
| | | //.in(!machineCodesInGroup.isEmpty(),NcNode::getMachineCode,machineCodesInGroup) |
| | | .eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list(); |
| | | |
| | | if(nodes.isEmpty()){ |
| | |
| | | |
| | | Machine machine = machineService.getByCode(packageNodeHis.getMachineCode());//ç¨åºå
èç¹ï¼è·å注éç¨ |
| | | |
| | | //éè¦å¢å çæ¬å·çè¿æ»¤ |
| | | List<NcNodeHis> programNodes = ncNodeHisService.lambdaQuery().eq(NcNodeHis::getParentId, approved.getNcNodeId()).list(); |
| | | |
| | | FlowProgramFile programFile; |
| | |
| | | dataMap.put("bz", WordReplaceUtil.CHECKED); |
| | | } |
| | | |
| | | dataMap.put("programNo",props.getProgramNo()); |
| | | dataMap.put("programNo",props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition()); |
| | | |
| | | dataMap.put("fzy",WordReplaceUtil.CHECKED); //ä»¿ç æ¯ |
| | | dataMap.put("fzn",WordReplaceUtil.UNCHECKED);//仿ç å¦ |
| | |
| | | import org.springblade.mdm.flow.vo.FlowVO; |
| | | import org.springblade.mdm.program.entity.NcNodeHis; |
| | | import org.springblade.mdm.program.service.NcNodeHisService; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springblade.mdm.statreport.utils.WordReplaceUtil; |
| | | import org.springblade.system.feign.IDictBizClient; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private final FlowProgramFileService flowProgramFileService; |
| | | private ApproveInfoQueryService approveInfoQueryService; |
| | | private final MachineService machineService; |
| | | private final NcNodeService nodeService; |
| | | private final NcNodeHisService nodeHisService; |
| | | private final ParamService paramService; |
| | | private final TaskDispatchService taskDispatchService; |
| | |
| | | private static final String DATE_PATTERN = "yyyy-M-d"; |
| | | /** |
| | | * 导åºwordå²¸æ¬ |
| | | * @param dispatch ä»»å¡åæ´¾ |
| | | * @param props æµç¨å±æ§ |
| | | */ |
| | | public ByteArrayOutputStream exportConfirmTableDoc(FlowProgramProperties props) throws IOException { |
| | |
| | | //鲿¢èæ°æ®æ¥é |
| | | dispatch = new TaskDispatch(); |
| | | } |
| | | dataMap.put("bh",props.getProgramNo());//ç¼å·ï¼å°±æ¯æ°æ§ç¨åºç¼å· |
| | | String bianhao = props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition(); |
| | | dataMap.put("bh",bianhao);//ç¼å·ï¼å°±æ¯æ°æ§ç¨åºç¼å· |
| | | |
| | | dataMap.put("drawingNo", props.getDrawingNo()); |
| | | dataMap.put("processNo", props.getProcessNo()); |
| | |
| | | }else{ |
| | | dataMap.put("czz", ""); |
| | | } |
| | | dataMap.put("programNo",props.getProgramNo()); |
| | | dataMap.put("programNo",bianhao); |
| | | if(StringUtils.isNotBlank(dispatch.getInspector())) { |
| | | dataMap.put("jyy",dispatch.getInspector()+"/"+formatTimeForTable(dispatch.getCheckTime()));//å®é
æ£éªååæ£éªæ¶é´ |
| | | |
| | |
| | | |
| | | dataMap.put("bianzhi",approveInfo.getProgrammerName()+"/"+formatTimeForTable(approveInfo.getProgrammingDate()));//ç¼ç¨äººå |
| | | //approveInfo.getDispatchDate() |
| | | dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/"+formatTimeForTable(approveInfo.getCheckDate()));//æ ¡å¯¹ï¼ä¸ä¸ç»é¿ |
| | | dataMap.put("shenhe",approveInfo.getSeniorName()+"/"+formatTimeForTable(approveInfo.getApproveDate())); |
| | | dataMap.put("jiaodui",(approveInfo.getTeamLeaderName()!=null?approveInfo.getTeamLeaderName():"")+"/"+formatTimeForTable(approveInfo.getCheckDate()));//æ ¡å¯¹ï¼ä¸ä¸ç»é¿ |
| | | dataMap.put("shenhe",(approveInfo.getSeniorName()!=null?approveInfo.getSeniorName():"")+"/"+formatTimeForTable(approveInfo.getApproveDate())); |
| | | |
| | | dataMap.put("sendPath",machine.getProgSendDir()!=null?machine.getProgSendDir():""); |
| | | |
| | |
| | | private MesSyncService mesSyncService; |
| | | @Autowired |
| | | private ParamService paramService; |
| | | /** |
| | | * æä»¶é»è®¤ä¿åå°æ¶æ°ï¼0ä¸éå¶ |
| | | */ |
| | | private static final int DEFAULT_HOUR = 0; |
| | | // æ¯5ç§æ§è¡ä¸æ¬¡ |
| | | //@Scheduled(cron = "0 15 19 * * ?") //test |
| | | @Scheduled(cron = "${task.cron.mes_sync:0 */10 * * * ?}") |
| | |
| | | import org.springblade.mdm.flow.excution.events.CureFinishedEvent; |
| | | import org.springblade.mdm.flow.service.MesSyncService; |
| | | import org.springblade.mdm.flow.service.WIthdrawService; |
| | | import org.springblade.mdm.machinefile.entity.FileSendRecord; |
| | | import org.springblade.mdm.machinefile.entity.MachineFile; |
| | | import org.springblade.mdm.machinefile.service.FileSendRecordService; |
| | | import org.springblade.mdm.machinefile.service.MachineFileScanService; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.entity.ProgramOnMachine; |
| | | import org.springblade.mdm.program.service.NcNodeHisService; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springblade.mdm.program.service.ProgramAnnotationService; |
| | | import org.springblade.mdm.program.service.ProgramOnMachineService; |
| | | import org.springblade.mdm.task.InternalEmailNotifyTask; |
| | | import org.springblade.mdm.task.MachineFileScanTask; |
| | | import org.springblade.mdm.task.ReceiveDirCheckTask; |
| | | import org.springblade.mdm.utils.FileContentUtil; |
| | | import org.springblade.system.feign.IDictBizClient; |
| | | import org.springblade.system.pojo.entity.DictBiz; |
| | |
| | | import java.io.InputStream; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | | |
| | | @Slf4j |
| | | @RestController |
| | |
| | | @Autowired |
| | | private MesSyncService mesSyncService; |
| | | @Autowired |
| | | private ProgramAnnotationService programAnnotationService; |
| | | private ReceiveDirCheckTask fileCheckTask; |
| | | @Autowired |
| | | private IDictBizClient bizDictClient; |
| | | @Autowired |
| | |
| | | |
| | | @Autowired |
| | | private NcNodeHisService nodeHisService; |
| | | @Autowired |
| | | private FileSendRecordService fileSendRecordService; |
| | | /** |
| | | * æ°å¢ |
| | | */ |
| | |
| | | int code = mesSyncService.postData(jsonObject); |
| | | log.info("mestest response:{}",code); |
| | | } |
| | | |
| | | @GetMapping("/check-files") |
| | | public void checkFiles(){ |
| | | fileCheckTask.checkFiles(); |
| | | } |
| | | |
| | | @GetMapping("/likeright") |
| | | public Object likeRight(){ |
| | | Optional<FileSendRecord> optFile = fileSendRecordService.lambdaQuery() |
| | | .eq(FileSendRecord::getMachineCode,"P01") |
| | | .likeRight(FileSendRecord::getName,"a-P%").last("limit 1") |
| | | .orderByDesc(FileSendRecord::getCreateTime).oneOpt(); |
| | | |
| | | return optFile.get(); |
| | | } |
| | | } |
| | |
| | | //System.out.println(charset); |
| | | } |
| | | |
| | | @Test |
| | | //@Test |
| | | public void testReadLineAt() throws IOException { |
| | | |
| | | Path source = Paths.get("src/test/resources/filecontenttest.txt"); |
| | |
| | | |
| | | } |
| | | |
| | | @Test |
| | | //@Test |
| | | public void testReplaceReadLineAt(@TempDir Path tempDir) throws IOException { |
| | | // å è½½èµæºæä»¶ |
| | | Path source = Paths.get("src/test/resources/filecontenttest.txt"); |