zhangherong
2025-05-19 7ed9bc6d11e9134d563ebafff071b5ebb65910e3
art: 设备管理-设备处置 借用归还 代码优化
已修改4个文件
149 ■■■■■ 文件已修改
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java
@@ -1,7 +1,11 @@
package org.jeecg.modules.eam.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -9,6 +13,7 @@
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
@@ -37,6 +42,10 @@
    private IEamEquipmentLeanOutService eamEquipmentLeanOutService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private TranslateDictTextUtils translateDictTextUtils;
    /**
     * 分页列表查询
@@ -93,7 +102,7 @@
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> edit(@RequestBody EamEquipmentLeanOut request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
            return Result.error("编辑的对象不能为空!");
        }
        boolean b = eamEquipmentLeanOutService.editLeanOut(request);
        if (!b) {
@@ -152,7 +161,18 @@
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        EamEquipmentLeanOut eamEquipmentLeanOut = eamEquipmentLeanOutService.getById(id);
        return Result.OK(eamEquipmentLeanOut);
        if (eamEquipmentLeanOut == null) {
            return Result.error("未找到对应数据");
        }
        try {
            String json = objectMapper.writeValueAsString(eamEquipmentLeanOut);
            JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
            translateDictTextUtils.translateField("leanDepartId", eamEquipmentLeanOut.getLeanDepartId(), item, "mdc_production,production_name,id");
            translateDictTextUtils.translateField("leanPerson", eamEquipmentLeanOut.getLeanPerson(), item, "sys_user,realname,username");
            return Result.OK(item);
        } catch (JsonProcessingException e) {
            return Result.error("数据转译失败!");
        }
    }
    /**
@@ -167,9 +187,29 @@
    public Result<?> submit(@RequestParam(name = "id", required = true) String id) {
        boolean b = eamEquipmentLeanOutService.submit(id);
        if (!b) {
            return Result.error("编辑失败!");
            return Result.error("操作失败!");
        }
        return Result.OK("删除成功!");
        return Result.OK("操作成功!");
    }
    /**
     * 编辑
     *
     * @param request
     * @return
     */
    @AutoLog(value = "设备借出归还-审批流")
    @ApiOperation(value = "设备借出归还-审批流", notes = "设备借出归还-审批流")
    @RequestMapping(value = "/approval", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> approval(@RequestBody EamEquipmentLeanOut request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
        }
        EamEquipmentLeanOut entity = eamEquipmentLeanOutService.approval(request);
        if (entity == null) {
            return Result.error("操作失败!");
        }
        return Result.OK("操作成功!");
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
@@ -68,6 +68,10 @@
    /**借用原因*/
    @ApiModelProperty(value = "借用原因")
    private String leanReason;
    /**审批类型*/
    @ApiModelProperty(value = "审批类型")
    @Dict(dicCode = "approved_rejected")
    private String approvalDealType;
    /**借出状态*/
    @Excel(name = "借出状态", width = 15)
    @ApiModelProperty(value = "借出状态")
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java
@@ -44,4 +44,11 @@
     * @return
     */
    boolean submit(String id);
    /**
     * 审批流程控制
     * @param request
     * @return
     */
    EamEquipmentLeanOut approval(EamEquipmentLeanOut request);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.eam.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,6 +8,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
@@ -14,20 +17,27 @@
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.AssetStatusEnum;
import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum;
import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import org.jeecg.modules.eam.mapper.EamEquipmentLeanOutMapper;
import org.jeecg.modules.eam.request.EamEquipmentLeanOutQuery;
import org.jeecg.modules.eam.service.IEamEquipmentLeanOutService;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
import org.jeecg.modules.flowable.service.IFlowDefinitionService;
import org.jeecg.modules.flowable.service.IFlowTaskService;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.jeecg.modules.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.*;
/**
 * @Description: 设备借出归还
@@ -35,14 +45,25 @@
 * @Date: 2025-05-13
 * @Version: V1.0
 */
@Service
public class EamEquipmentLeanOutServiceImpl extends ServiceImpl<EamEquipmentLeanOutMapper, EamEquipmentLeanOut> implements IEamEquipmentLeanOutService {
@Service("IEamEquipmentLeanOutService")
public class EamEquipmentLeanOutServiceImpl extends ServiceImpl<EamEquipmentLeanOutMapper, EamEquipmentLeanOut> implements IEamEquipmentLeanOutService, FlowCallBackServiceI {
    @Resource
    private EamEquipmentLeanOutMapper equipmentLeanOutMapper;
    @Autowired
    private IEamEquipmentService eamEquipmentService;
    @Autowired
    private IMdcProductionService mdcProductionService;
    private FlowCommonService flowCommonService;
    @Autowired
    private IFlowDefinitionService flowDefinitionService;
    @Autowired
    private IFlowMyBusinessService flowMyBusinessService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private IFlowTaskService flowTaskService;
    @Autowired
    private ISysUserService sysUserService;
    @Override
    public IPage<EamEquipmentLeanOut> queryPageList(Page<EamEquipmentLeanOut> page, EamEquipmentLeanOutQuery query) {
@@ -130,7 +151,7 @@
        if (entity == null) {
            throw new JeecgBootException("要编辑的数据不存在,请刷新重试!");
        }
        if(!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
        if (!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
@@ -168,7 +189,7 @@
        if (entity == null) {
            throw new JeecgBootException("要提交的数据不存在,请刷新重试!");
        }
        if(!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
        if (!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
@@ -188,11 +209,62 @@
        updateWrapper.eq("id", id);
        updateWrapper.eq("lean_person", sysUser.getUsername());
        boolean success = super.update(updateWrapper);
        if(success) {
        if (success) {
            equipment.setAssetStatus(AssetStatusEnum.LEAN_OUT.name());
            eamEquipmentService.updateById(equipment);
        }
        //启动审批流程 TODO
        //启动审批流程
        flowCommonService.initActBusiness("工单号:" + entity.getCode() + ";设备编号: " + equipment.getEquipmentCode() + ";进行设备借用",
                entity.getId(), "IEamEquipmentLeanOutService", "equipment_lean_out", null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", entity.getId());
        if (StrUtil.isEmpty(entity.getLeanReason())) {
            variables.put("organization", "新增借用工单默认启动流程");
            variables.put("comment", "新增借用工单默认启动流程");
        } else {
            variables.put("organization", entity.getLeanReason());
            variables.put("comment", entity.getLeanReason());
        }
        variables.put("proofreading", true);
        List<String> usernames = new ArrayList<>();
        usernames.add(equipment.getEquipmentManager());
        variables.put("NextAssignee", usernames);
        Result result = flowDefinitionService.startProcessInstanceByKey("equipment_lean_out", variables);
        if (result != null) {
            return result.isSuccess();
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public EamEquipmentLeanOut approval(EamEquipmentLeanOut request) {
        // TODO
        return null;
    }
    @Override
    public void afterFlowHandle(FlowMyBusiness business) {
        business.getTaskNameId();//接下来审批的节点
        business.getValues();//前端传进来的参数
        business.getActStatus();
    }
    @Override
    public Object getBusinessDataById(String dataId) {
        return this.getById(dataId);
    }
    @Override
    public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) {
        return null;
    }
    @Override
    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
        //业务是否干预流程,业务干预,流程干预,指定人员进行处理
        //获取下一步处理人
        Object object = values.get("NextAssignee");
        return (List<String>) object;
    }
}