blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java
@@ -28,6 +28,9 @@ * @return */ public String getUserNameById(Long userId){ if(userId == null){ return null; } R<User> programmerResult = userClient.userInfoById(userId); if(programmerResult.isSuccess()) { return programmerResult.getData().getName(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowVariableContants.java
@@ -15,4 +15,12 @@ * å®é çç¼ç¨äººåï¼ä¸ä¼ æä»¶ç人ï¼ï¼ä¸æ¯ä¸»ç®¡å·¥èº */ public static final String ACT_PROGRAMMER = "actProgrammer"; /** * å®é æ ¡å¯¹äººid */ public static final String ACT_CHECKER = "actChecker"; /** * å®é 审æ¹é«å¸id */ public static final String ACT_SENIOR = "actSenior"; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -124,6 +124,9 @@ programProperties.setProgramNo(Func.toStr(vars.get(FlowContants.PROGRAM_NO))); programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableContants.ACT_PROGRAMMER))); programProperties.setActCheckerId(Func.toLong(vars.get(FlowVariableContants.ACT_CHECKER))); programProperties.setActSeniorId(Func.toLong(vars.get(FlowVariableContants.ACT_SENIOR))); programProperties.setProgrammerName(Func.toStr(vars.get("programmerName"))); } /** * æµç¨æ¯å¦å¨è¿è¡ blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -82,4 +82,10 @@ @Schema(description = "æ°æ§ç¨åºç¼å·") private String programNo; @Schema(description = "å®é ç¼ç¨åå§å") private String programmerName; @Schema(description = "å®é æ ¡å¯¹å§å") private Long actCheckerId; @Schema(description = "å®é æ ¡å¯¹å§å") private Long actSeniorId; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
@@ -59,22 +59,25 @@ if(task.getTaskDefinitionKey().equals("programmingTask") ) {//ç¼å¶èç¹ //è®°å½å®é ç¼ç¨å variables.put(FlowVariableContants.ACT_PROGRAMMER,Func.toStr(AuthUtil.getUserId())); if(this.needUploadProgramFile(props.getMachineCode())) { String programOnMachine = Func.toStr(variables.getOrDefault("programOnMachine",FlowContants.N));//æ¯å¦ç°åºç¼ç¨ if(this.needUploadProgramFile(props.getMachineCode()) && programOnMachine.equals(FlowContants.N)) { flowProgramFileService.checkProgramFiles(processInstanceId, FlowContants.Y.equals(operateResult)); } }else if(task.getTaskDefinitionKey().equals("teamLeaderTask")){ if(FlowContants.Y.equals(operateResult)) { runtimeService.setVariable(task.getExecutionId(),FlowContants.PROGRAMMER_NAME,userCommonService.getUserNameById(Func.toLong(variables.get("assignee")))); } }else if(task.getTaskDefinitionKey().equals("check")){ runtimeService.setVariable(task.getExecutionId(),FlowVariableContants.ACT_CHECKER,Func.toLong(variables.get("assignee"))); }else if(task.getTaskDefinitionKey().equals("approveTask")){ runtimeService.setVariable(task.getExecutionId(),FlowVariableContants.ACT_SENIOR,Func.toLong(variables.get("assignee"))); } variables.remove("programOnMachine");//å ¶ä»èç¹ï¼å¿½ç¥ç°åºç¼ç¨æ è®° if (StringUtil.isNoneBlank(processInstanceId, comment)) { taskService.addComment(taskId, processInstanceId, comment); } variables.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName()); addApproveRecord(taskId,comment,variables); blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/CuredProgramController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ package org.springblade.mdm.statreport.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.statreport.service.CuredProgramStatService; import org.springblade.mdm.statreport.service.DeptRelationConfig; import org.springblade.mdm.statreport.service.NewProgrammingStatService; import org.springblade.mdm.statreport.vo.CuredProgramQueryVO; import org.springblade.mdm.statreport.vo.CuredProgramVO; import org.springblade.mdm.statreport.vo.NewProgrammingQueryVO; import org.springblade.mdm.statreport.vo.NewProgrammingVO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * åºåç¨åºç»è®¡ */ @Slf4j @RestController @AllArgsConstructor @RequestMapping("/statreport/cureprogram") @Tag(name = "æ°ç¼ç¨åºç»è®¡", description = "æ°ç¼ç¨åºç»è®¡") public class CuredProgramController { private final CuredProgramStatService curedProgramStatService; private final ParamService paramService; private final MdmDeptService mdmDeptService; private final DeptRelationConfig deptRelationConfig; @GetMapping("/page") @ApiOperationSupport(order = 3) @Operation(summary = "åºåç¨åºå表", description = "åºåç¨åºå表") public R<IPage<CuredProgramVO>> page(CuredProgramQueryVO query) { if(query.getDeptIds() == null || query.getDeptIds().isEmpty()){ //没æä¼ å ¥deptIds,æ¥è¯¢ç¨æ·å¯¹åºçæædeptId String userRole = AuthUtil.getUserRole();//è§è²å«åï¼å¤ä¸ªè§è²éå·åé List<String> userRoleAliasList = Func.toStrList(",", userRole); String managerRole = paramService.getProgramManagerRoleAlias(); if(!userRoleAliasList.contains(managerRole) && !AuthUtil.isAdministrator() && !AuthUtil.isAdmin()){ //éæ°æ§ç®¡çåè§è²ã管çåï¼éå¶æªåªè½å¯¼åºèªå·±çç¨åº query.setDeptIds(Func.toLongList(AuthUtil.getDeptId())); } } IPage<CuredProgramVO> pages = curedProgramStatService.pageQuery(query); return R.data(pages); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/NewProgrammingController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,130 @@ package org.springblade.mdm.statreport.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.history.HistoricProcessInstance; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.UrlUtil; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowProgramProperties; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.statreport.service.ConfirmTablePrintService; import org.springblade.mdm.statreport.service.DeptRelationConfig; import org.springblade.mdm.statreport.service.NewProgrammingStatService; import org.springblade.mdm.statreport.vo.NewProgrammingQueryVO; import org.springblade.mdm.statreport.vo.NewProgrammingVO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * æ°ç¼ç¨åºç»è®¡ */ @Slf4j @RestController @AllArgsConstructor @RequestMapping("/statreport/newprogramming") @Tag(name = "æ°ç¼ç¨åºç»è®¡", description = "æ°ç¼ç¨åºç»è®¡") public class NewProgrammingController { private NewProgrammingStatService newProgrammingStatService; private final HistoryService hisService; private final ParamService paramService; private final MdmDeptService mdmDeptService; private final DeptRelationConfig deptRelationConfig; @GetMapping("/page") @ApiOperationSupport(order = 3) @Operation(summary = "æ°ç¼ç¨åºå表", description = "æ°ç¼ç¨åºå表") public R<IPage<NewProgrammingVO>> page(NewProgrammingQueryVO query) { if(query.getDeptIds() == null || query.getDeptIds().isEmpty()){ //没æä¼ å ¥deptIds,æ¥è¯¢ç¨æ·å¯¹åºçæædeptId String userRole = AuthUtil.getUserRole();//è§è²å«åï¼å¤ä¸ªè§è²éå·åé List<String> userRoleAliasList = Func.toStrList(",", userRole); String managerRole = paramService.getProgramManagerRoleAlias(); if(!userRoleAliasList.contains(managerRole) && !AuthUtil.isAdministrator() && !AuthUtil.isAdmin()){ //éæ°æ§ç®¡çåè§è²ã管çåï¼éå¶æªåªè½å¯¼åºèªå·±çç¨åº query.setDeptIds(Func.toLongList(AuthUtil.getDeptId())); } } IPage<NewProgrammingVO> pages = newProgrammingStatService.pageQuery(query); return R.data(pages); } @GetMapping("/deptsData") @ApiOperationSupport(order = 3) @Operation(summary = "é¨é¨ä¸ææ°æ®", description = "é¨é¨ä¸ææ°æ®") public R<List<Map<String,String>>> deptIdsData() { String userRole = AuthUtil.getUserRole();//è§è²å«åï¼å¤ä¸ªè§è²éå·åé List<String> userRoleAliasList = Func.toStrList(",", userRole); List<Map<String,String>> result = new ArrayList<>(); String managerRole = paramService.getProgramManagerRoleAlias(); if(!userRoleAliasList.contains(managerRole) && !AuthUtil.isAdministrator() && !AuthUtil.isAdmin()){ //éæ°æ§ç®¡çåè§è²ã管çåï¼éå¶æªåªè½ä¸æèªå·±çé¨é¨ List<Long> deptIds = Func.toLongList(AuthUtil.getDeptId()); for(Long deptId : deptIds){ MdmDept dept = mdmDeptService.getById(deptId); if(dept != null){ /*Map<String,String> item = new HashMap<>(); item.put("label",dept.getDeptName()); item.put("value",dept.getId()+""); */ result.add(deptToMap(dept)); } } }else{ //å ¨é¨é¨é¨ç䏿 Map<Long,Long> relMap = deptRelationConfig.getDeptWorkshopMap(); //ææä¸ä¸ç»id List<MdmDept> deptList = mdmDeptService.listByIds(relMap.keySet().stream().toList()); for (MdmDept dept : deptList) { /* Map<String,String> item = new HashMap<>(); item.put("label",dept.getDeptName()); item.put("value",dept.getId()+""); */ result.add(deptToMap(dept)); } } return R.data(result); } Map<String,String> deptToMap(MdmDept dept){ Map<String,String> item = new HashMap<>(); item.put("label",dept.getDeptName()); item.put("value",dept.getId()+""); return item; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/CuredProgramStatService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,129 @@ package org.springblade.mdm.statreport.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.flowable.engine.HistoryService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.springblade.core.tool.utils.DateUtil; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService; import org.springblade.mdm.commons.service.UserCommonService; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowProgramProperties; import org.springblade.mdm.statreport.vo.CuredProgramQueryVO; import org.springblade.mdm.statreport.vo.CuredProgramVO; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * æµç¨ä¸å¡å®ç°ç±» * * @author Chill */ @Service @AllArgsConstructor public class CuredProgramStatService { private final FlowCommonService flowCommonService; private final HistoryService historyService; private final MachineService machineService; private final MdmDeptService mdmDeptService; private final UserCommonService userCommonService; private final DeptRelationConfig deptRelationConfig; public IPage<CuredProgramVO> pageQuery(CuredProgramQueryVO queryVO) { //åºåéè·¯æå® HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.CURE_PROCESS_KEY).includeProcessVariables(); //.finished() // åªæ¥è¯¢å·²å®æçæµç¨.unfinished() // æ¥è¯¢æªå®æçæµç¨ query.variableNotExists(FlowContants.EXCEPTION);//éå¼å¸¸æµç¨ if(queryVO.getEndMonth()!=null){ queryVO.setEndTimeBegin(queryVO.getEndMonth().withDayOfMonth(1)); queryVO.setEndTimeEnd(queryVO.getEndMonth().with(TemporalAdjusters.lastDayOfMonth())); } if(queryVO.getEndTimeBegin()!=null) { query.finishedAfter(DateUtil.toDate(queryVO.getEndTimeBegin())); } if(queryVO.getEndTimeEnd()!=null) { query.finishedBefore(DateUtil.toDate(queryVO.getEndTimeEnd())); } if(queryVO.getDeptIds()!=null && !queryVO.getDeptIds().isEmpty()) { //å°ä¸ä¸ç»idï¼æ ¹æ®æ å°æå车é´id List<Long> workshopList = new ArrayList<>(); Map<Long,Long> relMap = deptRelationConfig.getDeptWorkshopMap(); for(Long deptId : queryVO.getDeptIds()){ workshopList.add(relMap.get(deptId)); } //æ ¹æ®è½¦é´idï¼æ¥è¯¢ææçä¸çº§é¨é¨ï¼ä¸»è¦åºè¯¥æ¯å·¥æ®µ List<Long> allMachineDeptIds = new ArrayList<>(workshopList); for(Long workshopId : workshopList){ MdmDept workshop = this.mdmDeptService.getById(workshopId); if(workshop!=null){ String gongduanAncestors =workshop.getAncestors()+","+workshopId;//车é´ä¸ allMachineDeptIds.addAll(mdmDeptService.lambdaQuery() .likeRight(MdmDept::getAncestors,gongduanAncestors) .list().stream().map(MdmDept::getId).toList()); } } List<Machine> machines = this.machineService.lambdaQuery().in(Machine::getOwnerDept,allMachineDeptIds).list(); if(!machines.isEmpty()) { query.or(); for(Machine machine : machines){ query.variableValueEquals(FlowContants.MACHINE_CODE, machine.getCode()); } query.endOr(); }else{ //没æ¾å°æºåºï¼å°±åºè¯¥æ¥ä¸å°æ°æ® query.variableNotExists(FlowContants.MACHINE_CODE); } } query.orderByProcessInstanceEndTime().desc(); // æç»ææ¶é´éåºæå IPage<CuredProgramVO> page = new Page<>(); long firstResult = (page.getCurrent()-1) * page.getSize(); List<HistoricProcessInstance> processes = query.listPage((int)firstResult,(int)queryVO.getSize()); page.setTotal(query.count()); List<CuredProgramVO> records = new LinkedList<>(); for(HistoricProcessInstance processInstance : processes) { CuredProgramVO vo = new CuredProgramVO(); FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstance.getId()); BeanUtils.copyProperties(props, vo); vo.setEndTime(processInstance.getEndTime()); vo.setActProgrammerName(props.getProgrammerName()); if(props.getActCheckerId() == 0){ vo.setActCheckerName(this.userCommonService.getUserNameById(props.getCheckerId()) ); }else{ vo.setActCheckerName(this.userCommonService.getUserNameById(props.getActCheckerId()) ); } if(props.getActCheckerId() == 0) { vo.setActSeniorName(this.userCommonService.getUserNameById(props.getSeniorId())); }else{ vo.setActSeniorName(this.userCommonService.getUserNameById(props.getActSeniorId())); } records.add(vo); } page.setRecords(records); return page; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/DeptRelationConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package org.springblade.mdm.statreport.service; import lombok.Data; import lombok.Setter; import org.springblade.mdm.statreport.vo.DeptWorkshop; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.List; import java.util.Map; @Configuration @ConfigurationProperties(prefix = "deptrelation") @Data public class DeptRelationConfig { //private List<DeptWorkshop> deptworkshop; private Map<Long,Long> deptWorkshopMap; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/NewProgrammingStatService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,145 @@ package org.springblade.mdm.statreport.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.AllArgsConstructor; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.springblade.core.oss.OssTemplate; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService; import org.springblade.mdm.commons.contants.DictBizConstants; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.commons.service.UserCommonService; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.entity.FlowProgramFile; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowProgramFileService; import org.springblade.mdm.flow.service.FlowProgramProperties; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.statreport.utils.WordReplaceUtil; import org.springblade.mdm.statreport.vo.NewProgrammingQueryVO; import org.springblade.mdm.statreport.vo.NewProgrammingVO; import org.springblade.system.feign.IDictBizClient; import org.springblade.system.feign.IUserClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.time.LocalDateTime; import java.time.temporal.TemporalAdjusters; import java.util.*; /** * æµç¨ä¸å¡å®ç°ç±» * * @author Chill */ @Service @AllArgsConstructor public class NewProgrammingStatService { private final FlowCommonService flowCommonService; private final HistoryService historyService; private final MachineService machineService; private final MdmDeptService mdmDeptService; private final UserCommonService userCommonService; private final DeptRelationConfig deptRelationConfig; public IPage<NewProgrammingVO> pageQuery(NewProgrammingQueryVO queryVO) { //åºåéè·¯æå® HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.TRY_PROCESS_KEY).includeProcessVariables(); //.finished() // åªæ¥è¯¢å·²å®æçæµç¨.unfinished() // æ¥è¯¢æªå®æçæµç¨ query.variableNotExists(FlowContants.EXCEPTION);//éå¼å¸¸æµç¨ query.variableValueEquals(FlowContants.HAS_CURED_PROGRAM,FlowContants.N);//æ åºåç¨åº if(queryVO.getEndMonth()!=null){ queryVO.setEndTimeBegin(queryVO.getEndMonth().withDayOfMonth(1)); queryVO.setEndTimeEnd(queryVO.getEndMonth().with(TemporalAdjusters.lastDayOfMonth())); } if(queryVO.getEndTimeBegin()!=null) { query.finishedAfter(DateUtil.toDate(queryVO.getEndTimeBegin())); } if(queryVO.getEndTimeEnd()!=null) { query.finishedBefore(DateUtil.toDate(queryVO.getEndTimeEnd())); } if(queryVO.getDeptIds()!=null && !queryVO.getDeptIds().isEmpty()) { //å°ä¸ä¸ç»idï¼æ ¹æ®æ å°æå车é´id List<Long> workshopList = new ArrayList<>(); Map<Long,Long> relMap = deptRelationConfig.getDeptWorkshopMap(); for(Long deptId : queryVO.getDeptIds()){ workshopList.add(relMap.get(deptId)); } //æ ¹æ®è½¦é´idï¼æ¥è¯¢ææçä¸çº§é¨é¨ï¼ä¸»è¦åºè¯¥æ¯å·¥æ®µ List<Long> allMachineDeptIds = new ArrayList<>(workshopList); for(Long workshopId : workshopList){ MdmDept workshop = this.mdmDeptService.getById(workshopId); if(workshop!=null){ String gongduanAncestors =workshop.getAncestors()+","+workshopId;//车é´ä¸ allMachineDeptIds.addAll(mdmDeptService.lambdaQuery() .likeRight(MdmDept::getAncestors,gongduanAncestors) .list().stream().map(MdmDept::getId).toList()); } } List<Machine> machines = this.machineService.lambdaQuery().in(Machine::getOwnerDept,allMachineDeptIds).list(); if(!machines.isEmpty()) { query.or(); for(Machine machine : machines){ query.variableValueEquals(FlowContants.MACHINE_CODE, machine.getCode()); } query.endOr(); }else{ //没æ¾å°æºåºï¼å°±åºè¯¥æ¥ä¸å°æ°æ® query.variableNotExists(FlowContants.MACHINE_CODE); } } query.orderByProcessInstanceEndTime().desc(); // æç»ææ¶é´éåºæå IPage<NewProgrammingVO> page = new Page<>(); long firstResult = (page.getCurrent()-1) * page.getSize(); List<HistoricProcessInstance> processes = query.listPage((int)firstResult,(int)queryVO.getSize()); page.setTotal(query.count()); List<NewProgrammingVO> records = new LinkedList<>(); for(HistoricProcessInstance processInstance : processes) { NewProgrammingVO vo = new NewProgrammingVO(); FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstance.getId()); BeanUtils.copyProperties(props, vo); vo.setEndTime(processInstance.getEndTime()); vo.setActProgrammerName(props.getProgrammerName()); if(props.getActCheckerId() == 0){ vo.setActCheckerName(this.userCommonService.getUserNameById(props.getCheckerId()) ); }else{ vo.setActCheckerName(this.userCommonService.getUserNameById(props.getActCheckerId()) ); } if(props.getActCheckerId() == 0) { vo.setActSeniorName(this.userCommonService.getUserNameById(props.getSeniorId())); }else{ vo.setActSeniorName(this.userCommonService.getUserNameById(props.getActSeniorId())); } records.add(vo); } page.setRecords(records); return page; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/CuredProgramQueryVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package org.springblade.mdm.statreport.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; import java.util.List; /** * å页æ¥è¯¢åæ° */ @Schema(description = "æ°ç¼ç¨åºç»è®¡æ¥è¯¢å¯¹è±¡") @Setter @Getter public class CuredProgramQueryVO extends Query { @Schema(description = "ç¨åºåç§°") private String programName; @Schema(description = "宿æ¶é´æä»½-å®é åæ°ææ¶é´é¨å") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endMonth; @Schema(description = "宿æ¶é´å¼å§") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endTimeBegin; @Schema(description = "宿æ¶é´æªæ¢") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endTimeEnd; @Schema(description = "é¨é¨idéå,é管çåæå®è¯¥idï¼åªè½æ¥è¯¢èªå·±é¨é¨çè®°å½") private List<Long> deptIds; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/CuredProgramVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package org.springblade.mdm.statreport.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @Data @Schema(description = "æ°ç¼ç¨åºç»è®¡") public class CuredProgramVO { @Schema(description = "æµç¨å®ä¾id") private String processInstanceId; @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 actProgrammerName; @Schema(description = "æ ¡å¯¹äººåå§å") private String actCheckerName; @Schema(description = "å®¡æ ¸äººåå§å") private String actSeniorName; @Schema(description = "å®¡æ ¸ç»ææ¶é´") private Date endTime; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/DeptWorkshop.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package org.springblade.mdm.statreport.vo; import lombok.Data; /** * ä¸ä¸ç»é¨é¨idä¸è½¦é´idå¯¹åº */ @Data public class DeptWorkshop { private Long deptId; private Long workshopID; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingQueryVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package org.springblade.mdm.statreport.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; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * å页æ¥è¯¢åæ° */ @Schema(description = "æ°ç¼ç¨åºç»è®¡æ¥è¯¢å¯¹è±¡") @Setter @Getter public class NewProgrammingQueryVO extends Query { @Schema(description = "ç¨åºåç§°") private String programName; @Schema(description = "宿æ¶é´æä»½-å®é åæ°ææ¶é´é¨å") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endMonth; @Schema(description = "宿æ¶é´å¼å§") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endTimeBegin; @Schema(description = "宿æ¶é´æªæ¢") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate endTimeEnd; @Schema(description = "é¨é¨idéå,é管çåæå®è¯¥idï¼åªè½æ¥è¯¢èªå·±é¨é¨çè®°å½") private List<Long> deptIds; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/NewProgrammingVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package org.springblade.mdm.statreport.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.springblade.mdm.flow.constants.FlowContants; import java.time.LocalDate; import java.util.Date; @Data @Schema(description = "æ°ç¼ç¨åºç»è®¡") public class NewProgrammingVO { @Schema(description = "æµç¨å®ä¾id") private String processInstanceId; @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 actProgrammerName; @Schema(description = "æ ¡å¯¹äººåå§å") private String actCheckerName; @Schema(description = "å®¡æ ¸äººåå§å") private String actSeniorName; @Schema(description = "å®¡æ ¸ç»ææ¶é´") private Date endTime; } blade-service/blade-qinzhesync/src/main/java/org/springblade/qinzhesync/controller/SyncController.java
@@ -32,15 +32,4 @@ return R.<Boolean>status(true); } @GetMapping("/exists") @Operation(summary = "å¾å·åå¨å¤æ", description = "å¾å·åå¨å¤æ") public R<Boolean> exists(String drawingNo) { try { return R.data(service.drawingNoExists(drawingNo)); }catch (Exception e) { log.error("exist失败", e);; return R.fail(e.getMessage()); } } } blade-service/blade-qinzhesync/src/main/java/org/springblade/qinzhesync/service/QinzheSyncService.java
@@ -2,26 +2,19 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.tool.api.R; import org.springblade.qinzhesync.entity.ProduceDivision; import org.springblade.qinzhesync.utils.SnowflakeIdGenerator; import org.springblade.system.feign.ISysClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.cloud.commons.util.IdUtils; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.ResultSetExtractor; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * å¤å²ä¸»å¶åå·¥è¡¨æ°æ®åæ¥çæå¡ @@ -48,7 +41,7 @@ /** * æ¹éæå ¥æ°æ®æ°é */ static final int BATCH_SIZE = 4;//5000; static final int BATCH_SIZE = 2000;//5000; @Transactional public void syncData(){ @@ -63,24 +56,6 @@ saveQinzheFgb(); } /** * å¾å·æ¯å¦åå¨äºMDMå工表 * @param drawingNo * @return åå¨ä¸å¦ */ public boolean drawingNoExists(String drawingNo){ Long cnt = mdmJdbcTemplate.queryForObject("select count(*) from mdm_produce_division where drawing_no=?",Long.class,drawingNo); return cnt > 0; } /** * æ¸ é¤mdmå工表å ä»å¤å²å¯¼å ¥çã䏿ªç»è¿ä¿®æ¹çæ°æ® */ void cleanQinzheDataInDivision(){ //update_user =-1 æ¤æ å¿ä¸ºå¤å²åæ¥æ°æ®ä¸æªä¿®æ¹è¿ã mdmJdbcTemplate.update("delete from mdm_produce_division where create_user=-1 and update_user=-1"); } /** * å°å¤å²ç³»ç»çæ°æ®å 䏿¬¡æ§å¯¼å ¥mdmç³»ç»æ°æ®åºä¸´æ¶è¡¨ */ @@ -108,42 +83,7 @@ //updateProduceDivision(fgbList); } /** * //qingzhe - mdm * ä¸»ç®¡å·¥èº - ä¸ä¸ç»é¿ * ç¼å¶ï¼æ ¡å¯¹ï¼é«å¸ï¼ç®åé«å¸æ»å ±6个人ï¼ä¹é½æ²¡æ.ç®ååªå¹é ä¸ä¸ç»é¿å³å¯ï¼ç¼å¶æ ¡å¯¹å¨mdmä¸ç»´æ¤ * æ´æ°mdm主å¶åå·¥è¡¨æ°æ®, */ void updateProduceDivision(List<QinzheZzFgb> fgbList){ String sql = "insert into mdm_produce_division (id,drawing_no,team_leader_id,create_user,update_user,create_time,update_time,status,is_deleted) values (?,?,?,-1,-1,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1,0)"; String ljh,zggy; for(QinzheZzFgb fgb : fgbList){ if(drawingNoExists(fgb.getLjh())){ //å¾å·å·²åå¨ï¼è¯´æmdmç³»ç»ä¸å·²ç»å½å ¥è¿äº continue; } Long zuzhangId = getUserIdByName(fgb.getZggy()); mdmJdbcTemplate.update(sql, new Object[]{idGen.nextId(),fgb.getLjh(),zuzhangId}); } } void insertProduceDivision(String drawingNo,Long zuzhangId){ String sql = "insert into mdm_produce_division () values "; } Long getUserIdByName(String zuzhangName){ String sql = "select id from blade_user where name=? and is_deleted=0 order by update_time limit 1"; List<Long> idList = this.mdmJdbcTemplate.queryForList(sql,Long.class,zuzhangName); if(idList.isEmpty()){ return null; }else{ return idList.get(0); } } /** * æ¸ é¤æ¬å°ä¸´æ¶è¡¨æ°æ® */ @@ -156,7 +96,7 @@ * @param fgbList */ private void insertToLocalTable(List<QinzheZzFgb> fgbList) { String insSql = "insert into mdm_qinzhe_fgb (cph,ljh,ljmc,zz,zzgd,zggy,fg,cjjhy,jhy,update_time) values (?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)"; String insSql = "insert into mdm_qinzhe_fgb (cph,ljh,ljmc,zz,zzgd,zggy,fg,cjjhy,jhy,source,update_time) values (?,?,?,?,?,?,?,?,?,'QZ',CURRENT_TIMESTAMP)"; QinzheZzFgb fgb; List<Object[]> args = new ArrayList<>(); @@ -176,6 +116,10 @@ } } /** * æ ¹æ®é ç½®è·åå¤å²æ¥è¯¢sqlï¼åæ°ç®¡çéå¯é ç½®ï¼ * @return */ String getQuerySql(){ String querySql = DEFAULT_QUERY_SQL; R<String> sqlResult = sysClient.getParamValue(QINZHE_QUERY_KEY);