yangys
2025-09-07 56f5157ae8dba22eb30fb6c7cb132f80b7161932
派工界面增加选择主管工艺
已添加1个文件
已修改14个文件
184 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/ProduceDivisionController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/ProduceDivisionMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/ProduceDivisionMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowStartResult.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/controller/ProduceDivisionController.java
@@ -6,11 +6,15 @@
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.support.Query;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.tool.api.IResultCode;
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.producedivision.entity.ProduceDivision;
import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
import org.springblade.mdm.basesetting.producedivision.vo.ImportResult;
import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionVO;
@@ -23,6 +27,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.List;
@Slf4j
@@ -115,5 +120,41 @@
            log.error("导出分工表模板异常", e);
        }
    }
    @Operation(summary = "任务计划查询分工表id", description = "任务计划g根据零组件号查询职责表id")
    @GetMapping("/select-by-drawingno")
    public R<ProduceDivision> selectByDrawingNo(@RequestParam String drawingNo) {
        try {
            ProduceDivision div = service.getByDrawingNoWithQinzhe(drawingNo);
            return R.data(div);
        } catch (Exception e) {
            log.error("根据零件号获取职责表异常",e);
            return R.fail(new IResultCode() {
                @Override
                public String getMessage() {
                    return e.getMessage();
                }
                @Override
                public int getCode() {
                    return 201;
                }
            });
        }
    }
    @Operation(summary = "任务计划选择主管工艺", description = "任务计划选择主管工艺")
    @GetMapping("/select-programmer")
    public R<List<ProduceDivisionViewVO>> selectProgrammer(@RequestParam String programmer) {
        if(StringUtils.isBlank(programmer)){
            return R.data(Collections.emptyList());
        }
        try {
            String p = programmer.trim();
            return R.data(service.queryProgrammer(programmer));
        } catch (Exception e) {
            log.error("获取零件号异常",e);
            return R.fail(e.getMessage());
        }
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/ProduceDivisionMapper.java
@@ -6,8 +6,17 @@
import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionViewVO;
import java.util.List;
public interface ProduceDivisionMapper extends BladeMapper<ProduceDivision> {
    IPage<ProduceDivisionViewVO> pageQuery(@Param("page")IPage<ProduceDivision> page, @Param("name")String name);
    //pageMachine
    /**
     * æ ¹æ®å§“名查询主管工艺列表
     * @param programmer å·¥è‰ºi姓名
     * @return
     */
    List<ProduceDivisionViewVO> queryProgrammer(String programmer);
    //pageMachine
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/ProduceDivisionMapper.xml
@@ -32,5 +32,18 @@
            )
        </if>
    </select>
    <select id="queryProgrammer"
            resultType="org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionViewVO">
        select p.id,p.programmer_id,p.checker_id,p.senior_id,pro.name programmer_name,c.name checker_name
        from mdm_produce_division p
            left join blade_user pro on p.programmer_id=pro.id and pro.is_deleted=0
        left join blade_user c on p.checker_id=c.id and c.is_deleted=0
        <where>
            p.is_deleted=0
            <bind name="pname" value="programmer+'%'"/>
            and pro.name like #{pname}
        </where>
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java
@@ -185,4 +185,13 @@
        return division;
    }
    /**
     * é€‰æ‹©ä¸»ç®¡å·¥è‰ºæ•°æ®
     * @param programmer
     * @return
     */
    public List<ProduceDivisionViewVO> queryProgrammer(String programmer) {
        return baseMapper.queryProgrammer(programmer);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/UserCommonService.java
@@ -27,8 +27,8 @@
     * èŽ·å–ç”¨æˆ·å§“å
     * @return
     */
    public String getUserNameById(Long programmerId){
        R<User> programmerResult = userClient.userInfoById(programmerId);
    public String getUserNameById(Long userId){
        R<User> programmerResult = userClient.userInfoById(userId);
        if(programmerResult.isSuccess()) {
            return programmerResult.getData().getName();
        }else{
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -148,4 +148,8 @@
    å·²å›ºåŒ–但以已所帝国标志 Y/N
     */
    public static final String CURED_LOCKED = "curedLocked";
    /**
     * ç¨‹åºç¼–号
     */
    public static final String PROGRAM_NO = "programNo";
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -19,6 +19,7 @@
import org.springblade.mdm.flow.service.TaskDispatchService;
import org.springblade.mdm.flow.service.execute.*;
import org.springblade.mdm.flow.vo.BatchDispatchVO;
import org.springblade.mdm.flow.vo.FlowStartResult;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -35,9 +36,7 @@
    private final StartDispatcher dispatcher;
    private final TaskService taskService;
    private final RuntimeService runtimeService;
    private final FlowProgramFileService flowProgramFileService;
    private final TryFlowCompleteService tryFlowCompleteService;
@@ -62,16 +61,16 @@
            }
            try {
                String instId = dispatcher.start(startVO);
                FlowStartResult result = dispatcher.start(startVO);
                dispatch.setStatus(TaskDispatch.STATUS_STARTED);
                dispatch.setProcessInstanceId(instId);
                dispatch.setProcessInstanceId(result.getProcessInstanceId());
                dispatch.setProgramNo(result.getProgramNo());
                taskDispatchService.updateById(dispatch);
                return R.data(true);
            } catch (Exception e) {
                dispatch.setStatus(TaskDispatch.STATUS_EXCEPTION);
                dispatch.setErrMsg(e.getMessage());
                taskDispatchService.updateById(dispatch);
                //return R.fail("任务启动异常:"+e.getMessage());
                return R.fail(new IResultCode() {
                    @Override
                    public String getMessage() {
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchTaskController.java
@@ -24,6 +24,7 @@
import org.springblade.mdm.flow.service.execute.*;
import org.springblade.mdm.flow.vo.BatchDispatchVO;
import org.springblade.mdm.flow.vo.DispathTaskQueryVO;
import org.springblade.mdm.flow.vo.FlowStartResult;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
@@ -89,9 +90,10 @@
            BeanUtils.copyProperties(dispatch, startVO);
            startVO.setTitle(startVO.getDrawingNo()+"-"+startVO.getProcessNo()+"-"+startVO.getProcessEdition()+"数控程序编制");
            try {
                String instId = dispatcher.start(startVO);
                FlowStartResult result = dispatcher.start(startVO);
                dispatch.setStatus(TaskDispatch.STATUS_STARTED);
                dispatch.setProcessInstanceId(instId);
                dispatch.setProcessInstanceId(result.getProcessInstanceId());
                dispatch.setProgramNo(result.getProgramNo());
                taskDispatchService.updateById(dispatch);
            } catch (Exception e) {
                log.error("流程启动异常",e);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -7,14 +7,18 @@
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
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.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.vo.FlowStartResult;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NodeDeptQueryService;
import org.springblade.mdm.program.service.ProgramSeqService;
import org.springblade.mdm.utils.EntityUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,28 +33,41 @@
@Service("startDispatcher")
public class StartDispatcher  {
    private final RuntimeService runtimeService;
    private final ProgramSeqService programSeqService;
    private final IdentityService identityService;
    private final NcNodeService ncNodeService;
    private final FlowProgramFileService flowProgramFileService;
    private final NodeDeptQueryService nodeDeptQueryService;
    private final FlowCommonService flowCommonService;
    private final ProduceDivisionService produceDivisionService;
    private final UserCommonService userCommonService;
    /**
     * å¯åŠ¨æ´¾å·¥æµç¨‹
     * @param startVO è¡¨å•数据
     * @return æµç¨‹å®žä¾‹id
     */
    @Transactional
    public String start(TaskAssignVO startVO){
    public FlowStartResult start(TaskAssignVO startVO){
        if(!FlowContants.Y.equals(startVO.getIsTempFlow())){
            startVO.setIsTempFlow(FlowContants.N);
        }
        Map<String, Object> vars = new HashMap<>();
        ProduceDivision div = flowCommonService.putDefaultAssignees(vars,startVO.getDrawingNo(),null);
        ProduceDivision div;
        if(startVO.getProducePlanId() != null && startVO.getProducePlanId()!=0){
            //界面上选择了分工表的情况,直接根据id获取
            div = produceDivisionService.getById(startVO.getProducePlanId());
            vars.put(FlowContants.TEAM_LEADER,div.getTeamLeaderId());
            vars.put(FlowContants.PROGRAMMER,div.getProgrammerId());
            vars.put(FlowContants.CHECKER,div.getCheckerId());
            vars.put(FlowContants.SENIOR,div.getSeniorId());
            vars.put(FlowContants.PROGRAMMER_NAME, userCommonService.getUserNameById(div.getProgrammerId()));
        }else {
            div = flowCommonService.putDefaultAssignees(vars, startVO.getDrawingNo(), null);
        }
        vars.put(FlowContants.TITLE,startVO.getTitle());
        //机床编号
@@ -110,7 +127,7 @@
        vars.put(FlowContants.MY_PROCESS_NAME, myProcessName);
        String businessKey = "0";//业务表key
        String businessKey = Func.toStr(startVO.getTaskDispatchId());//业务表key
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        ProcessInstance inst;
        if(startVO.isTemporaryFlow()){
@@ -120,13 +137,20 @@
            vars.put(FlowContants.ASSIGNEE,div.getTeamLeaderId());//第一个用户组长
            inst = runtimeService.startProcessInstanceByKey(FlowContants.TRY_PROCESS_KEY,businessKey,vars);
        }
        FlowStartResult result = new FlowStartResult();
        result.setProcessInstanceId(inst.getProcessInstanceId());
        //生成程序编号
        String programNo = programSeqService.generageProgramNo();
        runtimeService.setVariable(inst.getProcessInstanceId(),FlowContants.PROGRAM_NO,programNo);
        result.setProgramNo(programNo);
        if(curedProgramPackage != null) {//存在已固化程序,复制原来的程序文件。
            copyFlowProgramFiles(curedProgramPackage.getId(),inst.getProcessInstanceId());
            curedProgramPackage.setProcessInstanceId(inst.getProcessInstanceId());
            ncNodeService.updateById(curedProgramPackage);
        }
        return inst.getProcessInstanceId();
        return result;
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -81,6 +81,11 @@
        return programProperties;
    }
    /**
     * ä»Žmap中赋值流程便利到vo
     * @param programProperties vo
     * @param vars å˜é‡map
     */
    void copyFlowPropertiesFromMap(FlowProgramProperties programProperties,Map<String, Object> vars){
        programProperties.setTitle(String.valueOf(vars.get(FlowContants.TITLE)));
@@ -116,6 +121,8 @@
        programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER)));
        programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR)));
        programProperties.setProgramNo(Func.toStr(vars.get(FlowContants.PROGRAM_NO)));
        programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableContants.ACT_PROGRAMMER)));
    }
    /**
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -79,4 +79,7 @@
    @Schema(description = "是否临时流程:Y/N")
    private String isTempFlow;
    @Schema(description = "数控程序编号")
    private String programNo;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowStartResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package org.springblade.mdm.flow.vo;
import lombok.Data;
@Data
public class FlowStartResult {
    private String processInstanceId;
    private String programNo;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
@@ -46,6 +46,11 @@
    @Schema(description = "是否临时流程,值:Y/N")
    private String isTempFlow;
    @Schema(description = "任务派工记录表id")
    private Long taskDispatchId;
    @Schema(description = "人员职责表id,界面上零件号匹配不上用户指定的")
    private Long producePlanId;
    /**
     * æ˜¯å¦ æœª ç¨‹åºè¡¥å……流程(临时流程)
     * @return æ˜¯å¦
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
@@ -31,7 +31,7 @@
    private final NcNodeService ncNodeService;
    private final FlowCommonService flowCommonService;
    private final FlowProgramFileService flowProgramFileService;
    private final ProgramSeqService programSeqService;
    public static final String TRY_NAME = "试切";
    public static final String CURE_NAME = "固化";
    public static final String DEVIATION_NAME = "偏离";
@@ -235,8 +235,8 @@
                ncNode.setDeviation(programProperties.getDeviation());
                if(NcNode.TYPE_PROGRAM_PACKAGE.equals(nodeType)) {//程序包节点,分配程序编号
                    String programNo = programSeqService.generageProgramNo();
                    ncNode.setProgramNo(programNo);
                    ncNode.setProgramNo(programProperties.getProgramNo());
                }
            }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/service/ApproveTableService.java
@@ -9,6 +9,7 @@
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.service.MachineService;
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.TaskDispatch;
import org.springblade.mdm.flow.service.ApproveInfoQueryService;
@@ -39,7 +40,7 @@
@Service
public class ApproveTableService {
    @Autowired
    private NcNodeService ncNodeService;
    private UserCommonService userCommonService;
    @Autowired
    private MachineService machineService;
    @Autowired
@@ -90,27 +91,28 @@
            dispatchDateStr = DateUtil.format(approveInfo.getDispatchDate(), DATE_PATTERN);
        }
        dataMap.put("teamLeader",approveInfo.getTeamLeaderName()+"/"+dispatchDateStr);
        dataMap.put("startTime",dispatchDateStr);//工段负责人/单元负责人派出时间
        dataMap.put("fuzeren",approveInfo.getProgrammerName());//负责人
        int isProgram = 0;
        if(StringUtils.equals(props.getHasCuredProgram(),FlowContants.Y)){
            //校对任务
            dataMap.put("jd", WordReplaceUtil.CHECKED);
            dataMap.put("bc", WordReplaceUtil.UNCHECKED);
            dataMap.put("bz", WordReplaceUtil.UNCHECKED);
        }else{
            //编程任务
            dataMap.put("jd", WordReplaceUtil.UNCHECKED);
            dataMap.put("bc", WordReplaceUtil.CHECKED);
            dataMap.put("bz", WordReplaceUtil.CHECKED);
        }
        dataMap.put("programNo",dispatch.getProgramNo());
        dataMap.put("fzy",WordReplaceUtil.CHECKED);
        dataMap.put("fzn",WordReplaceUtil.UNCHECKED);
        dataMap.put("fzy",WordReplaceUtil.CHECKED); //仿真 æ˜¯
        dataMap.put("fzn",WordReplaceUtil.UNCHECKED);//仿真 å¦
        Date programDate = approveInfo.getCheckDate();
        Date checkDate = approveInfo.getCheckDate();
        String bianzhiDateStr = DateUtil.format(dispatch.getCreateTime(), DATE_PATTERN);
        String checkDateStr = " ";
        if (checkDate != null) {
@@ -121,8 +123,9 @@
        if (approveInfo.getApproveDate() != null) {
            approveDateStr = DateUtil.format(approveInfo.getApproveDate(), DATE_PATTERN);
        }
        dataMap.put("programmer",approveInfo.getProgrammerName()+"/"+bianzhiDateStr);
        String bianzhi = userCommonService.getUserNameById(dispatch.getCreateUser());
        String bianzhiDateStr =  DateUtil.format(dispatch.getCreateTime(), DATE_PATTERN);
        dataMap.put("bianzhi",bianzhi+"/"+bianzhiDateStr);//编制:计划员/发起时间
        dataMap.put("jiaodui",approveInfo.getTeamLeaderName()+"/时间不确定");
        dataMap.put("shenpi",approveInfo.getSeniorName()+"/时间不确定");