zhangherong
2025-05-16 725a6ed97f7501de1795fce78fbd42624b310015
art: 设备管理-设备处置 借用归还 列表,新增,编辑,提交
已添加2个文件
已修改7个文件
435 ■■■■ 文件已修改
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentLeanOutMapper.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentLeanOutMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutQuery.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java
@@ -19,6 +19,8 @@
    String SECOND_MAINTENANCE_CODE_RULE = "SecondMaintenanceCodeRule";
    //三保编码规则
    String THIRD_MAINTENANCE_CODE_RULE = "ThirdMaintenanceCodeRule";
    //设备借出归还
    String LEAN_OUT_CODE_RULE = "EquipmentLeanOutCodeRule";
    /**
     * å¤‡ä»¶è¯·è´­å•状态 1:已创建 2:已提交 3:已通过 4:已驳回 5:已完成
     */
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentLeanOutStatusEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package org.jeecg.modules.eam.constant;
public enum EquipmentLeanOutStatusEnum {
    WAIT_SUBMIT, //待提交
    WAIT_APPROVAL, //待审批
    WAIT_RETURN, //待归还
    WAIT_CONFIRM, //待确认
    COMPLETE, //已完成
    ;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java
@@ -1,39 +1,27 @@
package org.jeecg.modules.eam.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import org.jeecg.modules.eam.service.IEamEquipmentLeanOutService;
import java.util.Date;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import org.jeecg.modules.eam.request.EamEquipmentLeanOutQuery;
import org.jeecg.modules.eam.service.IEamEquipmentLeanOutService;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: è®¾å¤‡å€Ÿå‡ºå½’还
@@ -48,54 +36,69 @@
public class EamEquipmentLeanOutController extends JeecgController<EamEquipmentLeanOut, IEamEquipmentLeanOutService> {
    @Autowired
    private IEamEquipmentLeanOutService eamEquipmentLeanOutService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamEquipmentLeanOut
     * @param query
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "设备借出归还-分页列表查询")
    @ApiOperation(value="设备借出归还-分页列表查询", notes="设备借出归还-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamEquipmentLeanOut eamEquipmentLeanOut,
    public Result<?> queryPageList(EamEquipmentLeanOutQuery query,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamEquipmentLeanOut> queryWrapper = QueryGenerator.initQueryWrapper(eamEquipmentLeanOut, req.getParameterMap());
        Page<EamEquipmentLeanOut> page = new Page<EamEquipmentLeanOut>(pageNo, pageSize);
        IPage<EamEquipmentLeanOut> pageList = eamEquipmentLeanOutService.page(page, queryWrapper);
        IPage<EamEquipmentLeanOut> pageList = eamEquipmentLeanOutService.queryPageList(page, query);
        return Result.OK(pageList);
    }
    
    /**
     * æ·»åŠ 
     *
     * @param eamEquipmentLeanOut
     * @param request
     * @return
     */
    @AutoLog(value = "设备借出归还-添加")
    @ApiOperation(value="设备借出归还-添加", notes="设备借出归还-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamEquipmentLeanOut eamEquipmentLeanOut) {
        eamEquipmentLeanOutService.save(eamEquipmentLeanOut);
    public Result<?> add(@RequestBody EamEquipmentLeanOut request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
        }
        String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.LEAN_OUT_CODE_RULE);
        request.setCode(codeSeq);
        request.setLeanStatus(EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name());
        boolean b = eamEquipmentLeanOutService.addLeanOut(request);
        if (!b) {
            return Result.error("添加失败!");
        }
        return Result.OK("添加成功!");
    }
    
    /**
     * ç¼–辑
     *
     * @param eamEquipmentLeanOut
     * @param request
     * @return
     */
    @AutoLog(value = "设备借出归还-编辑")
    @ApiOperation(value="设备借出归还-编辑", notes="设备借出归还-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamEquipmentLeanOut eamEquipmentLeanOut) {
        eamEquipmentLeanOutService.updateById(eamEquipmentLeanOut);
    public Result<?> edit(@RequestBody EamEquipmentLeanOut request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
        }
        boolean b = eamEquipmentLeanOutService.editLeanOut(request);
        if (!b) {
            return Result.error("编辑失败!");
        }
        return Result.OK("编辑成功!");
    }
    
@@ -142,26 +145,20 @@
    }
  /**
   * å¯¼å‡ºexcel
     * æäº¤
   *
   * @param request
   * @param eamEquipmentLeanOut
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamEquipmentLeanOut eamEquipmentLeanOut) {
      return super.exportXls(request, eamEquipmentLeanOut, EamEquipmentLeanOut.class, "设备借出归还");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
     * @param id
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamEquipmentLeanOut.class);
    @AutoLog(value = "设备借出归还-提交")
    @ApiOperation(value = "设备借出归还-提交", notes = "设备借出归还-提交")
    @GetMapping(value = "/submit")
    public Result<?> submit(@RequestParam(name = "id", required = true) String id) {
        boolean b = eamEquipmentLeanOutService.submit(id);
        if (!b) {
            return Result.error("编辑失败!");
        }
        return Result.OK("删除成功!");
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentLeanOut.java
@@ -1,14 +1,18 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@@ -30,25 +34,21 @@
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @Excel(name = "创建人", width = 15)
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @Excel(name = "更新人", width = 15)
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**设备ID*/
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**单据号*/
@@ -56,32 +56,69 @@
    @ApiModelProperty(value = "单据号")
    private String code;
    /**借入部门*/
    @Excel(name = "借入部门", width = 15)
    @Excel(name = "借入部门", width = 15, dictTable = "mdc_production", dicText = "production_name", dicCode = "id")
    @ApiModelProperty(value = "借入部门")
    @Dict(dicCode = "mdc_production, production_name, id")
    private String leanDepartId;
    /**借入责任人*/
    @Excel(name = "借入责任人", width = 15)
    @ApiModelProperty(value = "借入责任人")
    @Dict(dicCode = "sys_user, realname, username")
    private String leanPerson;
    /**借用原因*/
    @ApiModelProperty(value = "借用原因")
    private String leanReason;
    /**借出状态*/
    @Excel(name = "借出状态", width = 15)
    @ApiModelProperty(value = "借出状态")
    @Dict(dicCode = "equipment_lean_out_status")
    private String leanStatus;
    /**借出开始时间*/
    @ApiModelProperty(value = "借出开始时间")
    @ApiModelProperty(value = "借出时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date leanStartTime;
    /**借出归还时间*/
    @ApiModelProperty(value = "借出归还时间")
    @ApiModelProperty(value = "归还时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date leanEndTime;
    /**审核人*/
    @Excel(name = "审核人", width = 15)
    @ApiModelProperty(value = "审核人")
    @Dict(dicCode = "sys_user, realname, username")
    private String approvalUser;
    /**审核意见*/
    @Excel(name = "审核意见", width = 15)
    @ApiModelProperty(value = "审核意见")
    private String approvalComment;
    /**审核时间*/
    @ApiModelProperty(value = "审核时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;
    /**确认人*/
    @Excel(name = "确认人", width = 15)
    @ApiModelProperty(value = "确认人")
    @Dict(dicCode = "sys_user, realname, username")
    private String confirmUser;
    /**确认意见*/
    @Excel(name = "确认意见", width = 15)
    @ApiModelProperty(value = "确认意见")
    private String confirmComment;
    /**确认时间*/
    @ApiModelProperty(value = "确认时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date confirmTime;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    //列表展示
    @TableField(exist = false)
    private String equipmentCode;
    @TableField(exist = false)
    private String equipmentName;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentLeanOutMapper.java
@@ -1,10 +1,12 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: è®¾å¤‡å€Ÿå‡ºå½’还
@@ -14,4 +16,12 @@
 */
public interface EamEquipmentLeanOutMapper extends BaseMapper<EamEquipmentLeanOut> {
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param page
     * @param queryWrapper
     * @return
     */
    IPage<EamEquipmentLeanOut> queryPageList(Page<EamEquipmentLeanOut> page, @Param(Constants.WRAPPER) QueryWrapper<EamEquipmentLeanOut> queryWrapper);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentLeanOutMapper.xml
@@ -2,4 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.eam.mapper.EamEquipmentLeanOutMapper">
    <select id="queryPageList" resultType="org.jeecg.modules.eam.entity.EamEquipmentLeanOut">
        select wmo.*, e.equipment_code, e.equipment_name
        from eam_equipment_lean_out wmo
        inner join eam_equipment e
        on wmo.equipment_id = e.id
        ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentLeanOutQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package org.jeecg.modules.eam.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class EamEquipmentLeanOutQuery {
    private String code;
    private String equipmentId;
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date leanDateBegin;
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date leanDateEnd;
    private String leanStatus;
    private String column;
    private String order;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentLeanOutService.java
@@ -1,7 +1,10 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.eam.entity.EamEquipmentLeanOut;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.eam.request.EamEquipmentLeanOutQuery;
/**
 * @Description: è®¾å¤‡å€Ÿå‡ºå½’还
@@ -11,4 +14,34 @@
 */
public interface IEamEquipmentLeanOutService extends IService<EamEquipmentLeanOut> {
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param page
     * @param query
     * @return
     */
    IPage<EamEquipmentLeanOut> queryPageList(Page<EamEquipmentLeanOut> page, EamEquipmentLeanOutQuery query);
    /**
     * æ·»åŠ å€Ÿå‡ºè®°å½•
     *
     * @param request
     * @return
     */
    boolean addLeanOut(EamEquipmentLeanOut request);
    /**
     * ç¼–辑
     * @param request
     * @return
     */
    boolean editLeanOut(EamEquipmentLeanOut request);
    /**
     * æäº¤ç”³è¯·
     * @param id
     * @return
     */
    boolean submit(String id);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java
@@ -1,11 +1,33 @@
package org.jeecg.modules.eam.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
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.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.system.service.IMdcProductionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
 * @Description: è®¾å¤‡å€Ÿå‡ºå½’还
@@ -15,5 +37,161 @@
 */
@Service
public class EamEquipmentLeanOutServiceImpl extends ServiceImpl<EamEquipmentLeanOutMapper, EamEquipmentLeanOut> implements IEamEquipmentLeanOutService {
    @Resource
    private EamEquipmentLeanOutMapper equipmentLeanOutMapper;
    @Autowired
    private IEamEquipmentService eamEquipmentService;
    @Autowired
    private IMdcProductionService mdcProductionService;
    @Override
    public IPage<EamEquipmentLeanOut> queryPageList(Page<EamEquipmentLeanOut> page, EamEquipmentLeanOutQuery query) {
        QueryWrapper<EamEquipmentLeanOut> queryWrapper = new QueryWrapper<>();
        //用户数据权限
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            return page;
        }
        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
            queryWrapper.in("e.equipment_code", equipArr);
        } else {
            //没有选择设备,根据车间过滤设备
            queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId());
        }
        //控制待提交状态的数据只能本人查看
        queryWrapper.and(i -> i.ne("wmo.lean_status", EquipmentLeanOutStatusEnum.WAIT_SUBMIT).or().eq("wmo.lean_person", sysUser.getUsername()));
        //查询条件过滤
        if (query != null) {
            if (StringUtils.isNotBlank(query.getEquipmentId())) {
                queryWrapper.eq("wmo.equipment_id", query.getEquipmentId());
            }
            if (StringUtils.isNotBlank(query.getCode())) {
                queryWrapper.like("wmo.code", query.getCode());
            }
            if (StringUtils.isNotBlank(query.getLeanStatus())) {
                queryWrapper.eq("wmo.lean_status", query.getLeanStatus());
            }
            if (query.getLeanDateBegin() != null && query.getLeanDateEnd() != null) {
                queryWrapper.between("wmo.lean_start_time", query.getLeanDateBegin(), query.getLeanDateEnd());
            }
            //排序
            if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) {
                String column = query.getColumn();
                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
                }
                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.getOrder())) {
                    queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column));
                } else {
                    queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column));
                }
            } else {
                queryWrapper.orderByDesc("wmo.create_time");
            }
        } else {
            queryWrapper.orderByDesc("wmo.create_time");
        }
        return equipmentLeanOutMapper.queryPageList(page, queryWrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addLeanOut(EamEquipmentLeanOut request) {
        //检查设备
        EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在!");
        }
        if (!AssetStatusEnum.NORMAL.name().equals(equipment.getAssetStatus())) {
            throw new JeecgBootException("此设备当前资产状态不允许借出!");
        }
        if (StringUtils.isBlank(request.getLeanDepartId())) {
            throw new JeecgBootException("借入车间不允许为空!");
        }
        if (request.getLeanDepartId().equals(equipment.getOrgId())) {
            throw new JeecgBootException("当前设备属于此车间,不需要借用!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            throw new JeecgBootException("当前用户无法添加借用记录!");
        }
        request.setLeanPerson(sysUser.getUsername());
        return equipmentLeanOutMapper.insert(request) > 0;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editLeanOut(EamEquipmentLeanOut request) {
        EamEquipmentLeanOut entity = equipmentLeanOutMapper.selectById(request.getId());
        if (entity == null) {
            throw new JeecgBootException("要编辑的数据不存在,请刷新重试!");
        }
        if(!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
        EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在!");
        }
        if (!AssetStatusEnum.NORMAL.name().equals(equipment.getAssetStatus())) {
            throw new JeecgBootException("此设备当前资产状态不允许借出!");
        }
        if (StringUtils.isBlank(request.getLeanDepartId())) {
            throw new JeecgBootException("借入车间不允许为空!");
        }
        if (request.getLeanDepartId().equals(equipment.getOrgId())) {
            throw new JeecgBootException("当前设备属于此车间,不需要借用!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            throw new JeecgBootException("当前用户无法编辑借用记录!");
        }
        UpdateWrapper<EamEquipmentLeanOut> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("equipment_id", request.getEquipmentId());
        updateWrapper.set("lean_depart_id", request.getLeanDepartId());
        updateWrapper.set("remark", request.getRemark());
        updateWrapper.set("lean_reason", request.getLeanReason());
        updateWrapper.eq("id", request.getId());
        updateWrapper.eq("lean_person", sysUser.getUsername());
        return super.update(updateWrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean submit(String id) {
        EamEquipmentLeanOut entity = equipmentLeanOutMapper.selectById(id);
        if (entity == null) {
            throw new JeecgBootException("要提交的数据不存在,请刷新重试!");
        }
        if(!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getLeanStatus())) {
            throw new JeecgBootException("当前数据状态不允许编辑!");
        }
        //检查设备
        EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在!");
        }
        if (!AssetStatusEnum.NORMAL.name().equals(equipment.getAssetStatus())) {
            throw new JeecgBootException("此设备当前资产状态不允许借出!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            throw new JeecgBootException("当前用户无法编辑借用记录!");
        }
        UpdateWrapper<EamEquipmentLeanOut> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("lean_status", EquipmentLeanOutStatusEnum.WAIT_APPROVAL.name());
        updateWrapper.eq("id", id);
        updateWrapper.eq("lean_person", sysUser.getUsername());
        boolean success = super.update(updateWrapper);
        if(success) {
            equipment.setAssetStatus(AssetStatusEnum.LEAN_OUT.name());
            eamEquipmentService.updateById(equipment);
        }
        //启动审批流程 TODO
        return true;
    }
}