Commit 9ccf9f5a authored by 竹天卫's avatar 竹天卫

实验室驻场申请

委托上传附件功能
标样管理上传附件功能
评审时删除样品
parent 55b30da9
package cn.wise.sc.cement.business.controller;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.ClientQuery;
import cn.wise.sc.cement.business.model.query.SettleApprovalQuery;
import cn.wise.sc.cement.business.model.query.SettleDelayQuery;
import cn.wise.sc.cement.business.model.query.SettleQuery;
import cn.wise.sc.cement.business.service.ISettleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 前端控制器
* </p>
*
* @author ztw
* @since 2021-04-20
*/
@Api(tags = "实验室入驻管理")
@RestController
@RequestMapping("/business/settle")
public class SettleController {
private static final Logger log = LoggerFactory.getLogger("SettleController");
@Autowired
private ISettleService settleService;
@ApiOperation(value = "申请人分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "isApproval", value = "0未审批,1已审批", paramType = "query", dataType = "Integer")
})
@GetMapping("/getApplyPage")
public BaseResponse getApplyPage(PageQuery pageQuery, Integer isApproval) {
try {
return settleService.getApplyPage(pageQuery, isApproval);
} catch (Exception e) {
log.debug("申请人分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "审批人分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "isApproval", value = "0未审批,1已审批", paramType = "query", dataType = "Integer")
})
@GetMapping("/getApprovalPage")
public BaseResponse getApprovalPage(PageQuery pageQuery, Integer isApproval) {
try {
return settleService.getApprovalPage(pageQuery, isApproval);
} catch (Exception e) {
log.debug("审批人分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "实验室入驻详情")
@GetMapping("/getDetail/{settleId}")
public BaseResponse getDetail(@PathVariable Integer settleId) {
try {
return settleService.getDetail(settleId);
} catch (Exception e) {
log.debug("实验室入驻详情{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "入驻申请")
@PostMapping("/settleApply")
public BaseResponse settleApply(@RequestBody SettleQuery query) {
try {
return settleService.settleApply(query);
} catch (Exception e) {
log.debug("入驻申请{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "撤销")
@GetMapping("/revoke/{settleId}")
public BaseResponse revoke(@PathVariable Integer settleId) {
try {
return settleService.revoke(settleId);
} catch (Exception e) {
log.debug("撤销{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "延期申请")
@PostMapping("/delayApply")
public BaseResponse delayApply(@RequestBody SettleDelayQuery query) {
try {
return settleService.delayApply(query);
} catch (Exception e) {
log.debug("延期申请{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "验收申请")
@PostMapping("/checkApply")
public BaseResponse checkApply(Integer settleId) {
try {
return settleService.checkApply(settleId);
} catch (Exception e) {
log.debug("验收申请{}", e);
}
return BaseResponse.errorMsg("失败!");
}
@ApiOperation(value = "审批")
@PostMapping("/settleApproval")
public BaseResponse settleApproval(@RequestBody SettleApprovalQuery query) {
try {
return settleService.settleApproval(query);
} catch (Exception e) {
log.debug("审批{}", e);
}
return BaseResponse.errorMsg("失败!");
}
}
package cn.wise.sc.cement.business.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author ztw
* @since 2021-04-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Settle implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 申请单位
*/
private String clientName;
/**
* 入驻地点
*/
private String position;
/**
* 入驻日期
*/
private LocalDate settleDate;
/**
* 离开日期
*/
private LocalDate leaveDate;
/**
* 延期日期
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDate delayDate;
/**
* 是否存放样品(1是,0否)
*/
private Integer isDeposit;
/**
* 存放日期
*/
private LocalDate depositDate;
/**
* 申请用户id
*/
private Integer userId;
/**
* (0未审批,1未通过,2使用中,3验收中,4已验收,5撤销)
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 备注
*/
private String remark;
}
package cn.wise.sc.cement.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author ztw
* @since 2021-04-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SettleEquipment implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 入驻表d
*/
private Integer settleId;
/**
* 设备表id
*/
private Integer equipmentId;
/**
* 设备名称
*/
private String equipmentName;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 备注
*/
private String remark;
}
package cn.wise.sc.cement.business.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author ztw
* @since 2021-04-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SettleRecord implements Serializable {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 审批类型(1入驻申请,2延期申请,3验收申请)
*/
private Integer type;
/**
* 入驻表d
*/
private Integer settleId;
/**
* 申请人id
*/
private Integer userId;
/**
* 审批人id
*/
private Integer approvalId;
/**
* 审批意见(验收结果)
*/
private String opinion;
/**
* 审批结果(0申请,1通过,2驳回)
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 备注
*/
private String remark;
}
package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.SettleEquipment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author ztw
* @since 2021-04-20
*/
public interface SettleEquipmentMapper extends BaseMapper<SettleEquipment> {
}
package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.Settle;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.model.vo.SettleVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* <p>
* Mapper 接口
* </p>
*
* @author ztw
* @since 2021-04-20
*/
public interface SettleMapper extends BaseMapper<Settle> {
IPage<SettleVo> getApplyPage(@Param("page") Page page, @Param("params") Map<String, Object> params);
IPage<SettleVo> getApprovalPage(@Param("page") Page page, @Param("params") Map<String, Object> params);
}
package cn.wise.sc.cement.business.mapper;
import cn.wise.sc.cement.business.entity.SettleRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author ztw
* @since 2021-04-20
*/
public interface SettleRecordMapper extends BaseMapper<SettleRecord> {
}
<?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="cn.wise.sc.cement.business.mapper.SettleEquipmentMapper">
</mapper>
<?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="cn.wise.sc.cement.business.mapper.SettleMapper">
<select id="getApplyPage" resultType="cn.wise.sc.cement.business.model.vo.SettleVo">
select s.*,
(
CASE s.status
WHEN 0 THEN '未评审'
WHEN 1 THEN '未通过'
WHEN 2 THEN '使用中'
WHEN 3 THEN '验收中'
WHEN 4 THEN '已验收'
WHEN 5 THEN '撤销'
ELSE ''
END
) as statusValue,
'实验室入驻申请' as applyType
from settle s
<include refid="where"/>
order by s.create_time desc
</select>
<sql id="where">
<where>
and s.status != 5
<if test="params.isApproval == 0 ">
and s.status = 0
</if>
<if test="params.isApproval == 1 ">
and s.status != 0
</if>
<if test="params.userId != null">
and s.user_id = #{params.userId}
</if>
<if test="params.clientName != null and params.clientName != ''">
and s.client_name like concat('%', #{params.clientName}, '%')
</if>
<if test="params.startDate != null and params.startDate != ''">
and DATE(s.create_time) &gt;= #{params.startDate}
</if>
<if test="params.endDate != null and params.endDate != ''">
and DATE(s.create_time) &lt;= #{params.endDate}
</if>
</where>
</sql>
<select id="getApprovalPage" resultType="cn.wise.sc.cement.business.model.vo.SettleVo">
select s.*,
(
CASE s.status
WHEN 0 THEN '未评审'
WHEN 1 THEN '未通过'
WHEN 2 THEN '使用中'
WHEN 3 THEN '验收中'
WHEN 4 THEN '已验收'
WHEN 5 THEN '撤销'
ELSE ''
END
) as statusValue,
(
CASE sr.type
WHEN 1 THEN '实验室入驻申请'
WHEN 2 THEN '实验室延期申请'
WHEN 3 THEN '实验室验收申请'
ELSE ''
END
) as applyType
from settle_record sr
left join settle s on s.id = sr.settle_id
where s.status != 5
<if test="params.isApproval == 0 ">
and sr.status = 0
</if>
<if test="params.isApproval == 1 ">
and sr.status != 0
and sr.approval_id = #{params.userId}
</if>
order by sr.create_time desc
</select>
</mapper>
<?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="cn.wise.sc.cement.business.mapper.SettleRecordMapper">
</mapper>
package cn.wise.sc.cement.business.service;
import cn.wise.sc.cement.business.entity.Settle;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.SettleApprovalQuery;
import cn.wise.sc.cement.business.model.query.SettleDelayQuery;
import cn.wise.sc.cement.business.model.query.SettleQuery;
import cn.wise.sc.cement.business.model.vo.SettleVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author ztw
* @since 2021-04-20
*/
public interface ISettleService extends IService<Settle> {
BaseResponse<IPage<SettleVo>> getApplyPage(PageQuery pageQuery, Integer isApproval);
BaseResponse<IPage<SettleVo>> getApprovalPage(PageQuery pageQuery, Integer isApproval);
BaseResponse<SettleVo> getDetail(Integer settleId);
BaseResponse<String> settleApply(SettleQuery query);
BaseResponse<String> revoke(Integer settleId);
BaseResponse<String> delayApply(SettleDelayQuery query);
BaseResponse<String> checkApply(Integer settleId);
BaseResponse<String> settleApproval(SettleApprovalQuery query);
}
package cn.wise.sc.cement.business.service.impl;
import cn.wise.sc.cement.business.entity.*;
import cn.wise.sc.cement.business.mapper.*;
import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.model.LoginUser;
import cn.wise.sc.cement.business.model.PageQuery;
import cn.wise.sc.cement.business.model.query.ClientQuery;
import cn.wise.sc.cement.business.model.query.SettleApprovalQuery;
import cn.wise.sc.cement.business.model.query.SettleDelayQuery;
import cn.wise.sc.cement.business.model.query.SettleQuery;
import cn.wise.sc.cement.business.model.vo.EntrustVo;
import cn.wise.sc.cement.business.model.vo.SettleVo;
import cn.wise.sc.cement.business.service.ISettleEquipmentService;
import cn.wise.sc.cement.business.service.ISettleService;
import cn.wise.sc.cement.business.service.ISysUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
* </p>
*
* @author ztw
* @since 2021-04-20
*/
@Service
public class SettleServiceImpl extends ServiceImpl<SettleMapper, Settle> implements ISettleService {
@Resource
private SettleMapper settleMapper;
@Autowired
private ISysUserService userService;
@Resource
private EquipmentMapper equipmentMapper;
@Autowired
private ISettleEquipmentService settleEquipmentService;
@Resource
private SettleRecordMapper settleRecordMapper;
@Resource
private SysApprovalMapper sysApprovalMapper;
/**
* 申请人查看 分页
* @param pageQuery
* @param isApproval
* @return
*/
public BaseResponse<IPage<SettleVo>> getApplyPage(PageQuery pageQuery, Integer isApproval) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
Map<String, Object> params = new HashMap<>();
params.put("isApproval", isApproval);
params.put("userId", loginUser.getId());
Page<SettleVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<SettleVo> pages = settleMapper.getApplyPage(page, params);
return BaseResponse.okData(pages);
}
/**
* 审批人查看 分页
* @param pageQuery
* @param isApproval
* @return
*/
public BaseResponse<IPage<SettleVo>> getApprovalPage(PageQuery pageQuery, Integer isApproval) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
List<Integer> approvalIdList = sysApprovalMapper.getApprovalId("委托评审");
if (approvalIdList == null) {
return BaseResponse.errorMsg("委托评审信息错误");
}
if (!approvalIdList.contains(loginUser.getId())) {
return BaseResponse.errorMsg("权限不足");
}
Map<String, Object> params = new HashMap<>();
params.put("isApproval", isApproval);
params.put("userId", loginUser.getId());
Page<SettleVo> page = new Page<>(pageQuery.getPageNo(), pageQuery.getPageSize());
IPage<SettleVo> pages = settleMapper.getApprovalPage(page, params);
return BaseResponse.okData(pages);
}
/**
* 实验室入驻详情
* @param settleId
* @return
*/
public BaseResponse<SettleVo> getDetail(Integer settleId) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
if (settleId == null ) {
return BaseResponse.errorMsg("参数错误");
}
Settle settle =settleMapper.selectById(settleId);
if (settle == null) {
return BaseResponse.errorMsg("信息错误");
}
SettleVo settleVo = new SettleVo();
BeanUtils.copyProperties(settle, settleVo);
QueryWrapper<SettleEquipment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("settle_id", settleVo.getId());
List<SettleEquipment> seList = settleEquipmentService.list(queryWrapper);
String equipmentNames = "";
if (seList != null && seList.size() > 0) {
for (SettleEquipment se : seList) {
equipmentNames = equipmentNames.equals("") ? se.getEquipmentName() : (equipmentNames + "、" + se.getEquipmentName());
}
}
settleVo.setEquipmentNames(equipmentNames);
//查询当前入驻申请单的所有记录
QueryWrapper<SettleRecord> recordWrapper = new QueryWrapper<>();
recordWrapper.eq("settle_id", settle.getId());
List<SettleRecord> recordLst = settleRecordMapper.selectList(recordWrapper);
//入驻申请 结果 说明
List<SettleRecord> settleRecordList = recordLst.stream()
.filter(args -> args.getType().intValue() == 1 )
.sorted(Comparator.comparing(SettleRecord::getCreateTime).reversed())
.collect(Collectors.toList());
if(settleRecordList != null && settleRecordList.size()>0){
SettleRecord settleRecord = settleRecordList.get(0);
settleVo.setSettleResult(settleRecord.getStatus()==1?"通过":settleRecord.getStatus()==2?"驳回":null);
settleVo.setSettleOpinion(settleRecord.getOpinion());
}
//延期申请 结果 说明
List<SettleRecord> delayRecordList = recordLst.stream()
.filter(args -> args.getType().intValue() == 2 )
.sorted(Comparator.comparing(SettleRecord::getCreateTime).reversed())
.collect(Collectors.toList());
if(delayRecordList != null && delayRecordList.size()>0){
SettleRecord delayRecord = delayRecordList.get(0);
settleVo.setDelayResult(delayRecord.getStatus()==1?"通过":delayRecord.getStatus()==2?"驳回":null);
settleVo.setDelayOpinion(delayRecord.getOpinion());
}
//验收结果 验收说明
List<SettleRecord> checkRecordList = recordLst.stream()
.filter(args -> args.getType().intValue() == 3 )
.sorted(Comparator.comparing(SettleRecord::getCreateTime).reversed())
.collect(Collectors.toList());
if(checkRecordList != null && checkRecordList.size()>0){
SettleRecord checkRecord = checkRecordList.get(0);
settleVo.setCheckResult(checkRecord.getStatus()==1?"正常":checkRecord.getStatus()==2?"异常":null);
settleVo.setCheckOpinion(checkRecord.getOpinion());
}
return BaseResponse.okData(settleVo);
}
/**
* 入驻申请
* @param query
* @return
*/
@Override
@Transactional
public BaseResponse<String> settleApply(SettleQuery query) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
Settle settleApply = new Settle();
BeanUtils.copyProperties(query, settleApply);
settleApply.setUserId(loginUser.getId())
.setStatus(0)
.setCreateTime(LocalDateTime.now());
settleMapper.insert(settleApply);
//保存选择设备信息
if (query.getEquipmentIdList() != null && query.getEquipmentIdList().size() > 0) {
List<SettleEquipment> sdeList = new ArrayList<>();
for (int i = 0; i < query.getEquipmentIdList().size(); i++) {
Equipment equipment = equipmentMapper.selectById(query.getEquipmentIdList().get(i));
if (equipment == null) {
return BaseResponse.errorMsg("设备信息错误");
}
SettleEquipment sEquipment = new SettleEquipment();
sEquipment.setSettleId(settleApply.getId())
.setEquipmentId(equipment.getId())
.setEquipmentName(equipment.getName())
.setCreateTime(LocalDateTime.now());
sdeList.add(sEquipment);
}
settleEquipmentService.saveBatch(sdeList);
}
//保存申请记录信息
SettleRecord settleRecord = new SettleRecord();
settleRecord.setType(1)
.setSettleId(settleApply.getId())
.setUserId(loginUser.getId())
.setApprovalId(null)
.setStatus(0)
.setCreateTime(LocalDateTime.now());
settleRecordMapper.insert(settleRecord);
return BaseResponse.okMsg("成功");
}
/**
* 撤销
* @param settleId
* @return
*/
public BaseResponse<String> revoke(Integer settleId) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
if (settleId == null ) {
return BaseResponse.errorMsg("参数错误");
}
Settle settle =settleMapper.selectById(settleId);
if (settle == null) {
return BaseResponse.errorMsg("信息错误");
}
if(loginUser.getId() != settle.getUserId()){
return BaseResponse.errorMsg("登录账号不允许操作");
}
if (settle.getStatus() != 0) {
return BaseResponse.errorMsg("当前状态不允许撤销");
}
settle.setStatus(5); //撤销
settleMapper.updateById(settle);
return BaseResponse.okMsg("成功");
}
/**
* 延期申请
* @param query
* @return
*/
@Override
@Transactional
public BaseResponse<String> delayApply(SettleDelayQuery query) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
if (query == null || query.getSettleId() == null ) {
return BaseResponse.errorMsg("参数错误");
}
if (query.getDelayDate() == null) {
return BaseResponse.errorMsg("请选择延至日期");
}
Settle settle =settleMapper.selectById(query.getSettleId());
if (settle == null) {
return BaseResponse.errorMsg("信息错误");
}
if(loginUser.getId() != settle.getUserId()){
return BaseResponse.errorMsg("登录账号不允许操作");
}
if(settle.getStatus() != 2 ){
return BaseResponse.errorMsg("当前状态不允许申请延期");
}
settle.setDelayDate(query.getDelayDate());
//保存申请记录信息
SettleRecord settleRecord = new SettleRecord();
settleRecord.setType(2)
.setSettleId(settle.getId())
.setUserId(loginUser.getId())
.setApprovalId(null)
.setStatus(0)
.setCreateTime(LocalDateTime.now());
settleRecordMapper.insert(settleRecord);
settleMapper.updateById(settle);
return BaseResponse.okMsg("成功");
}
/**
* 验收申请
* @param settleId
* @return
*/
@Override
@Transactional
public BaseResponse<String> checkApply(Integer settleId) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
if (settleId == null ) {
return BaseResponse.errorMsg("参数错误");
}
Settle settle =settleMapper.selectById(settleId);
if (settle == null) {
return BaseResponse.errorMsg("信息错误");
}
if(loginUser.getId() != settle.getUserId()){
return BaseResponse.errorMsg("登录账号不允许操作");
}
if(settle.getStatus() != 2 ){
return BaseResponse.errorMsg("当前状态不允许申请验收");
}
settle.setStatus(3);
//保存申请记录信息
SettleRecord settleRecord = new SettleRecord();
settleRecord.setType(3)
.setSettleId(settle.getId())
.setUserId(loginUser.getId())
.setApprovalId(null)
.setStatus(0)
.setCreateTime(LocalDateTime.now());
settleRecordMapper.insert(settleRecord);
settleMapper.updateById(settle);
return BaseResponse.okMsg("成功");
}
/**
* 审批
* @param query
* @return
*/
@Override
@Transactional
public BaseResponse<String> settleApproval(SettleApprovalQuery query) {
LoginUser loginUser = userService.getLoginUser();
if (loginUser == null) {
return BaseResponse.noLogin("请登录账号");
}
List<Integer> approvalIdList = sysApprovalMapper.getApprovalId("委托评审");
if (approvalIdList == null) {
return BaseResponse.errorMsg("委托评审信息错误");
}
if (!approvalIdList.contains(loginUser.getId())) {
return BaseResponse.errorMsg("权限不足");
}
if (query == null || query.getSettleId() == null || query.getIsAgree() == null) {
return BaseResponse.errorMsg("参数错误");
}
if (query.getType() == null) {
return BaseResponse.errorMsg("审批类型必传");
}
Settle settle =settleMapper.selectById(query.getSettleId());
if (settle == null) {
return BaseResponse.errorMsg("信息错误");
}
if(query.getType() == 1){ //入驻申请
if (settle.getStatus() != 0) {
return BaseResponse.errorMsg("当前状态不允许审批");
}
//查找入驻申请记录
QueryWrapper<SettleRecord> srWrapper = new QueryWrapper<>();
srWrapper.eq("type", 1);
srWrapper.eq("settle_id", settle.getId());
srWrapper.eq("user_id", settle.getUserId());
srWrapper.eq("status", 0);
SettleRecord record = settleRecordMapper.selectOne(srWrapper);
if(record == null){
return BaseResponse.errorMsg("申请记录不存在");
}
if (query.getIsAgree() == 1) { //通过
settle.setStatus(2); //使用中
record.setApprovalId(loginUser.getId()).setOpinion(query.getOpinion()).setStatus(1); //通过
}else if (query.getIsAgree() == 2) { //驳回
settle.setStatus(1); //未通过
record.setApprovalId(loginUser.getId()).setOpinion(query.getOpinion()).setStatus(2); //驳回
}else {
return BaseResponse.errorMsg("请选择正确按钮");
}
settleRecordMapper.updateById(record);
}else if (query.getType() == 2) { //延期申请
if (settle.getStatus() != 2) {
return BaseResponse.errorMsg("当前状态不允许审批");
}
//查找延期申请记录
QueryWrapper<SettleRecord> srWrapper = new QueryWrapper<>();
srWrapper.eq("type", 2);
srWrapper.eq("settle_id", settle.getId());
srWrapper.eq("user_id", settle.getUserId());
srWrapper.eq("status", 0);
SettleRecord record = settleRecordMapper.selectOne(srWrapper);
if(record == null){
return BaseResponse.errorMsg("申请记录不存在");
}
if (query.getIsAgree() == 1) { //通过
settle.setLeaveDate(settle.getDelayDate()).setDelayDate(null);
record.setApprovalId(loginUser.getId()).setOpinion(query.getOpinion()).setStatus(1); //通过
}else if (query.getIsAgree() == 2) { //驳回
settle.setDelayDate(null);
record.setApprovalId(loginUser.getId()).setOpinion(query.getOpinion()).setStatus(2); //驳回
}else {
return BaseResponse.errorMsg("请选择正确按钮");
}
settleRecordMapper.updateById(record);
}else if (query.getType() == 3) { //验收申请
if (settle.getStatus() != 3) {
return BaseResponse.errorMsg("当前状态不允许审批");
}
//查找验收申请记录
QueryWrapper<SettleRecord> srWrapper = new QueryWrapper<>();
srWrapper.eq("type", 3);
srWrapper.eq("settle_id", settle.getId());
srWrapper.eq("user_id", settle.getUserId());
srWrapper.eq("status", 0);
SettleRecord record = settleRecordMapper.selectOne(srWrapper);
if(record == null){
return BaseResponse.errorMsg("申请记录不存在");
}
settle.setStatus(4);
if (query.getIsAgree() == 1 || query.getIsAgree() == 2) {
record.setApprovalId(loginUser.getId()).setOpinion(query.getOpinion()).setStatus(query.getIsAgree());
}else {
return BaseResponse.errorMsg("请选择正确验收结果");
}
settleRecordMapper.updateById(record);
}else{
return BaseResponse.errorMsg("请传入正确审批类型");
}
settleMapper.updateById(settle);
return BaseResponse.okMsg("成功");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment