结算优化

This commit is contained in:
mashuai 2024-12-06 14:12:02 +08:00
parent 365036ca50
commit a5d0b758c7
12 changed files with 445 additions and 380 deletions

View File

@ -0,0 +1,63 @@
package com.bonus.material.device.controller;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.device.domain.DevInfo;
import com.bonus.material.device.domain.MaDevQc;
import com.bonus.material.device.service.MaDevQcService;
import com.bonus.material.lease.domain.MaLeaseInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
/**
* @Author ma_sh
* @create 2024/12/5 15:53
*/
@RestController
@RequestMapping("/ma_qc")
@Api(value = "装备质检管理",tags = "装备质检")
public class MaDevQcController extends BaseController {
@Resource
private MaDevQcService maDevQcService;
/**
* 装备质检列表
* @param maDevQc
* @return
*/
@ApiOperation(value = "装备质检列表")
@GetMapping("/list")
public AjaxResult list(@RequestBody MaDevQc maDevQc) {
startPage();
List<MaDevQc> list = maDevQcService.selectDevQcList(maDevQc);
return AjaxResult.success(getDataTable(list));
}
/**
* 新增装备质检--含附件上传
* @param maDevQc
* @return
*/
@ApiOperation(value = "新增装备质检--含附件上传")
@PostMapping("/add")
public AjaxResult add(@RequestBody MaDevQc maDevQc) {
return maDevQcService.insertDevQc(maDevQc);
}
/**
* 删除装备质检
* @param maDevQc
* @return
*/
@ApiOperation(value = "删除装备质检")
@PostMapping("/deleteById")
public AjaxResult deleteById(@RequestBody MaDevQc maDevQc) {
return maDevQcService.deleteById(maDevQc);
}
}

View File

@ -0,0 +1,64 @@
package com.bonus.material.device.domain;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
import java.util.List;
/**
* 装备质检表(MaDevQc)实体类
*
* @author makejava
* @since 2024-12-05 15:51:33
*/
@Data
public class MaDevQc extends BaseEntity implements Serializable {
private static final long serialVersionUID = 810056154627295208L;
@ApiModelProperty(value = "主键id")
private Integer id;
@ApiModelProperty(value = "装备id")
private Integer maId;
@ApiModelProperty(value = "设备编码")
private String deviceCode;
@ApiModelProperty(value = "装备名称")
private String deviceName;
@ApiModelProperty(value = "质检名称")
private String qcName;
@ApiModelProperty(value = "质检编码")
private String qcCode;
@ApiModelProperty(value = "质检员")
private String qcUser;
@ApiModelProperty(value = "质检日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date qcTime;
@ApiModelProperty(value = "质检开始日期")
private String qcStartTime;
@ApiModelProperty(value = "质检结束日期")
private String qcEndTime;
@ApiModelProperty(value = "上传开始日期")
private String createStartTime;
@ApiModelProperty(value = "上传结束日期")
private String createEndTime;
@ApiModelProperty(value = "附件信息")
private List<BmFileInfo> fileInfoList;
}

View File

@ -0,0 +1,44 @@
package com.bonus.material.device.mapper;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.device.domain.MaDevQc;
import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
/**
* @Author ma_sh
* @create 2024/12/5 15:54
*/
@Mapper
public interface MaDevQcMapper {
/**
* 装备质检列表
* @param maDevQc
* @return
*/
List<MaDevQc> selectDevQcList(MaDevQc maDevQc);
/**
* 新增装备质检
* @param maDevQc
* @return
*/
int insertDevQc(MaDevQc maDevQc);
/**
* 删除装备质检
* @param id
* @return
*/
int deleteDevQcById(Integer id);
/**
* 查询月任务数
* @param nowDate
* @return
*/
String selectTaskNumByMonth(Date nowDate);
}

View File

@ -0,0 +1,34 @@
package com.bonus.material.device.service;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.device.domain.MaDevQc;
import java.util.List;
/**
* @Author ma_sh
* @create 2024/12/5 15:53
*/
public interface MaDevQcService {
/**
* 装备质检列表
* @param maDevQc
* @return
*/
List<MaDevQc> selectDevQcList(MaDevQc maDevQc);
/**
* 新增设备质检
* @param maDevQc
* @return
*/
AjaxResult insertDevQc(MaDevQc maDevQc);
/**
* 删除装备质检
* @param maDevQc
* @return
*/
AjaxResult deleteById(MaDevQc maDevQc);
}

View File

@ -0,0 +1,109 @@
package com.bonus.material.device.service.impl;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.biz.enums.HttpCodeEnum;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.device.domain.MaDevQc;
import com.bonus.material.device.mapper.BmFileInfoMapper;
import com.bonus.material.device.mapper.MaDevQcMapper;
import com.bonus.material.device.service.MaDevQcService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @Author ma_sh
* @create 2024/12/5 15:53
*/
@Service
public class MaDevQcServiceImpl implements MaDevQcService {
@Resource
private MaDevQcMapper maDevQcMapper;
@Resource
private BmFileInfoMapper bmFileInfoMapper;
/**
* 装备质检列表
* @param maDevQc
* @return
*/
@Override
public List<MaDevQc> selectDevQcList(MaDevQc maDevQc) {
return maDevQcMapper.selectDevQcList(maDevQc);
}
/**
* 新增装备质检
* @param maDevQc
* @return
*/
@Override
public AjaxResult insertDevQc(MaDevQc maDevQc) {
if (maDevQc == null) {
return AjaxResult.error(HttpCodeEnum.TO_PARAM_NULL.getCode(), HttpCodeEnum.TO_PARAM_NULL.getMsg());
}
String code = getString();
maDevQc.setQcCode(code);
maDevQc.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
maDevQc.setCreateTime(DateUtils.getNowDate());
int result = maDevQcMapper.insertDevQc(maDevQc);
if (result > 0 && maDevQc.getId() != null) {
if (CollectionUtils.isNotEmpty(maDevQc.getFileInfoList())) {
for (BmFileInfo bmFileInfo : maDevQc.getFileInfoList()) {
bmFileInfo.setModelId(Long.valueOf(maDevQc.getId()));
bmFileInfo.setTaskType(MaterialConstants.MATERIAL_FILE_TYPE_CODE);
bmFileInfo.setFileType(4L);
bmFileInfoMapper.insertBmFileInfo(bmFileInfo);
}
}
}
return result > 0 ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 生成需求编号
* @return
*/
private String getString() {
//根据前台传过来的数据生成需求编号
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date nowDate = DateUtils.getNowDate();
String format = dateFormat.format(nowDate);
String taskNum = maDevQcMapper.selectTaskNumByMonth(nowDate);
if (StringUtils.isNotBlank(taskNum)) {
// 将字符串转换为整数
int num = Integer.parseInt(taskNum);
// 执行加一操作
num++;
// 将结果转换回字符串格式并确保结果是4位数不足4位则在前面补0
taskNum = String.format("%04d", num);
} else {
taskNum = "0001";
}
return "QC" + format + "-" + taskNum;
}
/**
* 删除装备质检
* @param maDevQc
* @return
*/
@Override
public AjaxResult deleteById(MaDevQc maDevQc) {
if (maDevQc == null || maDevQc.getId() == null) {
return AjaxResult.error(HttpCodeEnum.TO_PARAM_NULL.getCode(), HttpCodeEnum.TO_PARAM_NULL.getMsg());
}
return maDevQcMapper.deleteDevQcById(maDevQc.getId()) > 0 ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) :
AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
}

View File

@ -27,6 +27,9 @@ public class MaLeaseDetails {
*/
private Integer leaseNum;
@ApiModelProperty(value = "装备描述")
private String description;
@ApiModelProperty(value = "装备类目id集合")
private List<String> typeIds;

View File

@ -50,10 +50,13 @@ public class MaLeaseInfo extends BaseEntity implements Serializable {
*/
private Integer leaseStatus;
/**
* 预估租期
*/
private Integer leaseDay;
@ApiModelProperty(value = "租赁开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date leaseStartTime;
@ApiModelProperty(value = "租赁结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date leaseEndTime;
/**
* 需求发布时间
@ -135,9 +138,6 @@ public class MaLeaseInfo extends BaseEntity implements Serializable {
*/
private String rejectUser;
@ApiModelProperty(value = "文件信息")
private List<BmFileInfo> fileInfoList;
@ApiModelProperty(value = "需求详情")
private List<MaLeaseDetails> detailsList;
}

View File

@ -188,52 +188,12 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
return insertRecord(leaseRepairRecord);
}
try {
// 处理不同记录类型
// 1. 只有维修记录
if (CollectionUtils.isNotEmpty(leaseRecordDto.getRepairRecordList()) && CollectionUtils.isEmpty(leaseRecordDto.getScrapRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getLossRecordList())) {
return handleRepairRecords(leaseRecordDto, leaseRepairRecord);
}
// 2. 只有报废记录
if (CollectionUtils.isNotEmpty(leaseRecordDto.getScrapRecordList()) && CollectionUtils.isEmpty(leaseRecordDto.getRepairRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getLossRecordList())) {
return handleScrapRecords(leaseRecordDto, leaseRepairRecord);
}
// 3. 只有丢失记录
if (CollectionUtils.isNotEmpty(leaseRecordDto.getLossRecordList()) && CollectionUtils.isEmpty(leaseRecordDto.getRepairRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getScrapRecordList())) {
return handleLossRecords(leaseRecordDto, leaseRepairRecord);
}
// 处理维修+报废维修+丢失报废+丢失等组合情况
// 1. 报废+维修
if (CollectionUtils.isNotEmpty(leaseRecordDto.getRepairRecordList()) &&
CollectionUtils.isNotEmpty(leaseRecordDto.getScrapRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getLossRecordList())) {
return handleRepairAndScrap(leaseRecordDto, maIdList);
}
// 2. 报废+丢失
if (CollectionUtils.isNotEmpty(leaseRecordDto.getRepairRecordList()) &&
CollectionUtils.isNotEmpty(leaseRecordDto.getLossRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getScrapRecordList())) {
return handleRepairAndLoss(leaseRecordDto, maIdList);
}
// 3. 丢失+报废
if (CollectionUtils.isNotEmpty(leaseRecordDto.getScrapRecordList()) &&
CollectionUtils.isNotEmpty(leaseRecordDto.getLossRecordList())
&& CollectionUtils.isEmpty(leaseRecordDto.getRepairRecordList())) {
return handleScrapAndLoss(leaseRecordDto, maIdList);
}
// 处理维修报废丢失记录都有的情况
if (CollectionUtils.isNotEmpty(leaseRecordDto.getRepairRecordList()) &&
CollectionUtils.isNotEmpty(leaseRecordDto.getScrapRecordList()) &&
CollectionUtils.isNotEmpty(leaseRecordDto.getLossRecordList())) {
return handleAllRecords(leaseRecordDto, maIdList);
}
// 处理维修报废丢失记录的情况
return handleAllRecords(leaseRecordDto, maIdList);
} catch (Exception e) {
log.error("新增退租检修异常: ", e.getMessage());
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), e.getMessage());
}
return AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg());
}
/**
@ -323,288 +283,6 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理维修记录
* @param leaseRecordDto
* @param leaseRepairRecord
* @return
*/
private AjaxResult handleRepairRecords(LeaseRecordDto leaseRecordDto, LeaseRepairRecord leaseRepairRecord) {
int result = 0;
for (LeaseRepairRecord repairRecord : leaseRecordDto.getRepairRecordList()) {
leaseRepairRecord.setMaId(repairRecord.getMaId());
leaseRepairRecord.setTypeId(repairRecord.getTypeId());
leaseRepairRecord.setRepairNum(repairRecord.getRepairNum());
leaseRepairRecord.setRepairPrice(repairRecord.getRepairPrice());
if (repairRecord.getRepairNum() > repairRecord.getNum()) {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), repairRecord.getDeviceName() + "维修数量不能大于设备数量");
}
result += mapper.insert(leaseRepairRecord);
if (result > 0) {
if (CollectionUtils.isNotEmpty(repairRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(repairRecord.getFileInfoList());
}
}
}
return result > 0 ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理报废记录
* @param leaseRecordDto
* @param leaseRepairRecord
* @return
*/
private AjaxResult handleScrapRecords(LeaseRecordDto leaseRecordDto, LeaseRepairRecord leaseRepairRecord) {
int result = 0;
for (LeaseRepairRecord scrapRecord : leaseRecordDto.getScrapRecordList()) {
leaseRepairRecord.setMaId(scrapRecord.getMaId());
leaseRepairRecord.setTypeId(scrapRecord.getTypeId());
leaseRepairRecord.setScrapNum(scrapRecord.getScrapNum());
leaseRepairRecord.setScrapPrice(scrapRecord.getScrapPrice());
leaseRepairRecord.setScrapReason(scrapRecord.getScrapReason() == null ? "" : scrapRecord.getScrapReason());
if (scrapRecord.getScrapNum() > scrapRecord.getNum()) {
throw new ServiceException("报废数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
result += mapper.insert(leaseRepairRecord);
if (result > 0) {
if (CollectionUtils.isNotEmpty(scrapRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(scrapRecord.getFileInfoList());
}
}
}
return result > 0 ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理丢失记录
* @param leaseRecordDto
* @param leaseRepairRecord
* @return
*/
private AjaxResult handleLossRecords(LeaseRecordDto leaseRecordDto, LeaseRepairRecord leaseRepairRecord) {
int result = 0;
for (LeaseRepairRecord lossRecord : leaseRecordDto.getLossRecordList()) {
leaseRepairRecord.setMaId(lossRecord.getMaId());
leaseRepairRecord.setTypeId(lossRecord.getTypeId());
leaseRepairRecord.setLossNum(lossRecord.getLossNum());
leaseRepairRecord.setLossPrice(lossRecord.getLossPrice());
if (lossRecord.getLossNum() > lossRecord.getNum()) {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "丢失数量不能大于设备数量");
}
result += mapper.insert(leaseRepairRecord);
if (result > 0) {
if (CollectionUtils.isNotEmpty(lossRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(lossRecord.getFileInfoList());
}
}
}
return result > 0 ? AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg()) : AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理维修和报废记录
* @param leaseRecordDto
* @param maIdList
* @return
*/
private AjaxResult handleRepairAndScrap(LeaseRecordDto leaseRecordDto, List<Integer> maIdList) {
int result = 0;
for (Integer maId : maIdList) {
LeaseRepairRecord leaseRepairRecord = new LeaseRepairRecord();
leaseRepairRecord.setOrderId(leaseRecordDto.getOrderId());
leaseRepairRecord.setCode(leaseRecordDto.getCode());
leaseRepairRecord.setCreateBy(SecurityUtils.getUserId().toString());
leaseRepairRecord.setCreateTime(DateUtils.getNowDate());
List<LeaseRepairRecord> repairRecordList = leaseRecordDto.getRepairRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
List<LeaseRepairRecord> scrapRecordList = leaseRecordDto.getScrapRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
int repairNum = repairRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getRepairNum()).orElse(0)).sum();
int scrapNum = scrapRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getScrapNum()).orElse(0)).sum();
// 选择第一个不为空的集合的 getNum() 数量
int num = 0;
if (!repairRecordList.isEmpty()) {
num = repairRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
} else if (!scrapRecordList.isEmpty()) {
num = scrapRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
}
if (repairNum + scrapNum > num) {
throw new ServiceException("维修数量+报废数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
// 插入维修记录
if (CollectionUtils.isNotEmpty(repairRecordList)) {
for (LeaseRepairRecord repairRecord : repairRecordList) {
leaseRepairRecord.setMaId(repairRecord.getMaId());
leaseRepairRecord.setTypeId(repairRecord.getTypeId());
leaseRepairRecord.setRepairNum(repairRecord.getRepairNum());
leaseRepairRecord.setRepairPrice(repairRecord.getRepairPrice());
if (CollectionUtils.isNotEmpty(repairRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(repairRecord.getFileInfoList());
}
}
}
// 插入报废记录
if (CollectionUtils.isNotEmpty(scrapRecordList)) {
for (LeaseRepairRecord scrapRecord : scrapRecordList) {
leaseRepairRecord.setMaId(scrapRecord.getMaId());
leaseRepairRecord.setTypeId(scrapRecord.getTypeId());
leaseRepairRecord.setScrapNum(scrapRecord.getScrapNum());
leaseRepairRecord.setScrapPrice(scrapRecord.getScrapPrice());
leaseRepairRecord.setScrapReason(scrapRecord.getScrapReason() == null ? "" : scrapRecord.getScrapReason());
if (CollectionUtils.isNotEmpty(scrapRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(scrapRecord.getFileInfoList());
}
}
}
result += mapper.insert(leaseRepairRecord);
}
if (result > 0) {
return AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg());
}
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理维修和丢失记录
* @param leaseRecordDto
* @param maIdList
* @return
*/
private AjaxResult handleRepairAndLoss(LeaseRecordDto leaseRecordDto, List<Integer> maIdList) {
int result = 0;
for (Integer maId : maIdList) {
LeaseRepairRecord leaseRepairRecord = new LeaseRepairRecord();
leaseRepairRecord.setOrderId(leaseRecordDto.getOrderId());
leaseRepairRecord.setCode(leaseRecordDto.getCode());
leaseRepairRecord.setCreateBy(SecurityUtils.getUserId().toString());
leaseRepairRecord.setCreateTime(DateUtils.getNowDate());
List<LeaseRepairRecord> repairRecordList = leaseRecordDto.getRepairRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
List<LeaseRepairRecord> lossRecordList = leaseRecordDto.getLossRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
int repairNum = repairRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getRepairNum()).orElse(0)).sum();
int lossNum = repairRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getLossNum()).orElse(0)).sum();
// 选择第一个不为空的集合的 getNum() 数量
int num = 0;
if (!repairRecordList.isEmpty()) {
num = repairRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
}else if (!lossRecordList.isEmpty()) {
num = lossRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
}
if (repairNum + lossNum > num) {
throw new ServiceException("维修数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
// 插入维修记录
if (CollectionUtils.isNotEmpty(repairRecordList)) {
for (LeaseRepairRecord repairRecord : repairRecordList) {
leaseRepairRecord.setMaId(repairRecord.getMaId());
leaseRepairRecord.setTypeId(repairRecord.getTypeId());
leaseRepairRecord.setRepairNum(repairRecord.getRepairNum());
leaseRepairRecord.setRepairPrice(repairRecord.getRepairPrice());
if (CollectionUtils.isNotEmpty(repairRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(repairRecord.getFileInfoList());
}
}
}
// 插入丢失记录
if (CollectionUtils.isNotEmpty(lossRecordList)) {
for (LeaseRepairRecord lossRecord : lossRecordList) {
leaseRepairRecord.setMaId(lossRecord.getMaId());
leaseRepairRecord.setTypeId(lossRecord.getTypeId());
leaseRepairRecord.setLossNum(lossRecord.getLossNum());
leaseRepairRecord.setLossPrice(lossRecord.getLossPrice());
if (CollectionUtils.isNotEmpty(lossRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(lossRecord.getFileInfoList());
}
}
}
result += mapper.insert(leaseRepairRecord);
}
if (result > 0) {
return AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg());
}
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理报废+丢失记录
* @param leaseRecordDto
* @param maIdList
* @return
*/
private AjaxResult handleScrapAndLoss(LeaseRecordDto leaseRecordDto, List<Integer> maIdList) {
int result = 0;
for (Integer maId : maIdList) {
LeaseRepairRecord leaseRepairRecord = new LeaseRepairRecord();
leaseRepairRecord.setOrderId(leaseRecordDto.getOrderId());
leaseRepairRecord.setCode(leaseRecordDto.getCode());
leaseRepairRecord.setCreateBy(SecurityUtils.getUserId().toString());
leaseRepairRecord.setCreateTime(DateUtils.getNowDate());
List<LeaseRepairRecord> scrapRecordList = leaseRecordDto.getScrapRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
List<LeaseRepairRecord> lossRecordList = leaseRecordDto.getLossRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
int scrapNum = scrapRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getScrapNum()).orElse(0)).sum();
int lossNum = lossRecordList.stream().mapToInt(record -> Optional.ofNullable(record.getLossNum()).orElse(0)).sum();
// 选择第一个不为空的集合的 getNum() 数量
int num = 0;
if (!scrapRecordList.isEmpty()) {
num = scrapRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
} else if (!lossRecordList.isEmpty()) {
num = lossRecordList.stream()
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
}
if (scrapNum + lossNum > num) {
throw new ServiceException("报废数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
// 插入报废记录
if (CollectionUtils.isNotEmpty(scrapRecordList)) {
for (LeaseRepairRecord scrapRecord : scrapRecordList) {
leaseRepairRecord.setMaId(scrapRecord.getMaId());
leaseRepairRecord.setTypeId(scrapRecord.getTypeId());
leaseRepairRecord.setScrapNum(scrapRecord.getScrapNum());
leaseRepairRecord.setScrapPrice(scrapRecord.getScrapPrice());
leaseRepairRecord.setScrapReason(scrapRecord.getScrapReason() == null ? "" : scrapRecord.getScrapReason());
if (CollectionUtils.isNotEmpty(scrapRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(scrapRecord.getFileInfoList());
}
}
}
// 插入丢失记录
if (CollectionUtils.isNotEmpty(lossRecordList)) {
for (LeaseRepairRecord lossRecord : lossRecordList) {
leaseRepairRecord.setMaId(lossRecord.getMaId());
leaseRepairRecord.setTypeId(lossRecord.getTypeId());
leaseRepairRecord.setLossNum(lossRecord.getLossNum());
leaseRepairRecord.setLossPrice(lossRecord.getLossPrice());
if (CollectionUtils.isNotEmpty(lossRecord.getFileInfoList())) {
bmFileInfoMapper.insertBmFileInfos(lossRecord.getFileInfoList());
}
}
}
result += mapper.insert(leaseRepairRecord);
}
if (result > 0) {
return AjaxResult.success(HttpCodeEnum.SUCCESS.getMsg());
}
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/**
* 处理维修报废丢失记录都有的情况
* @param leaseRecordDto
@ -614,11 +292,7 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
private AjaxResult handleAllRecords(LeaseRecordDto leaseRecordDto, List<Integer> maIdList) {
int result = 0;
for (Integer maId : maIdList) {
LeaseRepairRecord leaseRepairRecord = new LeaseRepairRecord();
leaseRepairRecord.setOrderId(leaseRecordDto.getOrderId());
leaseRepairRecord.setCode(leaseRecordDto.getCode());
leaseRepairRecord.setCreateBy(SecurityUtils.getUserId().toString());
leaseRepairRecord.setCreateTime(DateUtils.getNowDate());
LeaseRepairRecord leaseRepairRecord = createLeaseRepairRecord(leaseRecordDto);
List<LeaseRepairRecord> repairRecordList = leaseRecordDto.getRepairRecordList().stream()
.filter(item -> item.getMaId().equals(maId)).collect(Collectors.toList());
List<LeaseRepairRecord> scrapRecordList = leaseRecordDto.getScrapRecordList().stream()
@ -643,8 +317,26 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
.mapToInt(record -> Optional.ofNullable(record.getNum()).orElse(0))
.sum();
}
if (repairNum + scrapNum + lossNum > num) {
throw new ServiceException("维修数量+报废数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
if (repairNum > 0 && scrapNum == 0 && lossNum == 0 && repairNum > num) {
throw new ServiceException(repairRecordList.get(0).getDeviceName() + "的维修数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum == 0 && scrapNum > 0 && lossNum == 0 && scrapNum > num) {
throw new ServiceException(scrapRecordList.get(0).getDeviceName() + "的报废数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum == 0 && scrapNum == 0 && lossNum > 0 && lossNum > num) {
throw new ServiceException(lossRecordList.get(0).getDeviceName() + "的丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum > 0 && scrapNum > 0 && lossNum == 0 && repairNum + scrapNum > num) {
throw new ServiceException(repairRecordList.get(0).getDeviceName() + "的维修数量+报废数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum > 0 && scrapNum == 0 && lossNum > 0 && repairNum + lossNum > num) {
throw new ServiceException(repairRecordList.get(0).getDeviceName() + "的维修数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum == 0 && scrapNum > 0 && lossNum > 0 && scrapNum + lossNum > num) {
throw new ServiceException(scrapRecordList.get(0).getDeviceName() + "的报废数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
if (repairNum > 0 && scrapNum > 0 && lossNum > 0 && repairNum + scrapNum + lossNum > num) {
throw new ServiceException(repairRecordList.get(0).getDeviceName() + "的维修数量+报废数量+丢失数量不能大于设备数量", HttpCodeEnum.FAIL.getCode());
}
// 插入维修记录
if (CollectionUtils.isNotEmpty(repairRecordList)) {

View File

@ -65,9 +65,7 @@ public class MaLeaseInfoServiceImpl implements MaLeaseInfoService {
int result = leaseInfoMapper.insert(maLeaseInfo);
if (result > 0 && maLeaseInfo.getId() != null) {
Integer id = maLeaseInfo.getId();
// 4. 插入文件信息
insertFileInfo(maLeaseInfo , id);
//5.插入详情信息
//4.插入详情信息
if (CollectionUtils.isNotEmpty(maLeaseInfo.getDetailsList())) {
long distinctCodes = maLeaseInfo.getDetailsList().stream().map(MaLeaseDetails::getTypeId).distinct().count();
if (distinctCodes < maLeaseInfo.getDetailsList().size()) {
@ -147,7 +145,6 @@ public class MaLeaseInfoServiceImpl implements MaLeaseInfoService {
bmFileInfoMapper.deleteBmFileInfoByIds(bmFileInfoList.stream().map(BmFileInfo::getId).toArray(Long[]::new));
}
//插入文件信息
insertFileInfo(maLeaseInfo, maLeaseInfo.getId());
if (CollectionUtils.isNotEmpty(maLeaseInfo.getDetailsList())) {
long distinctCodes = maLeaseInfo.getDetailsList().stream().map(MaLeaseDetails::getTypeId).distinct().count();
if (distinctCodes < maLeaseInfo.getDetailsList().size()) {
@ -183,23 +180,16 @@ public class MaLeaseInfoServiceImpl implements MaLeaseInfoService {
MaLeaseVo maLeaseVo = leaseInfoMapper.selectByName(maLeaseInfo);
List<MaLeaseDetails> leaseDetailsList = leaseInfoMapper.selectDetailsById(maLeaseInfo);
// 3. 文件信息初始化
// 查询文件信息FileType = 0
List<BmFileInfo> fileList = getBmFileInfoList(maLeaseVo.getId(), 0L);
if (CollectionUtil.isNotEmpty(fileList)) {
maLeaseVo.setFileInfoList(fileList);
}
// 4. 处理租赁详情信息
// 3. 处理租赁详情信息
if (CollectionUtil.isNotEmpty(leaseDetailsList)) {
// 处理每个租赁详情
processLeaseDetails(leaseDetailsList, maLeaseVo.getId());
}
// 5. 更新浏览量仅在待接单状态时
// 4. 更新浏览量仅在待接单状态时
updateHotSearchIfNeeded(maLeaseVo, maLeaseInfo.getId());
// 6. 返回结果
// 5. 返回结果
maLeaseVo.setDetailsList(leaseDetailsList);
return AjaxResult.success(maLeaseVo);
}
@ -420,24 +410,6 @@ public class MaLeaseInfoServiceImpl implements MaLeaseInfoService {
maLeaseInfo.setPublishCompany(String.valueOf(SecurityUtils.getLoginUser().getSysUser().getCompanyId()));
}
/**
* 插入文件信息
* @param maLeaseInfo
*/
private void insertFileInfo(MaLeaseInfo maLeaseInfo, Integer id) {
if (CollectionUtil.isNotEmpty(maLeaseInfo.getFileInfoList())) {
List<BmFileInfo> bmFileInfos = new ArrayList<>();
for (BmFileInfo bmFileInfo : maLeaseInfo.getFileInfoList()) {
bmFileInfo.setModelId(Long.valueOf(id));
bmFileInfo.setTaskType(MaterialConstants.LEASE_FILE_TYPE_CODE);
bmFileInfo.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
bmFileInfo.setFileType(0L);
bmFileInfos.add(bmFileInfo);
}
bmFileInfoMapper.insertBmFileInfos(bmFileInfos);
}
}
/**
* 生成需求编号
* @return

View File

@ -532,7 +532,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
sys_dept sd
LEFT JOIN bm_company_info b ON sd.dept_id = b.company_id
WHERE sd.parent_id = 0 and sd.order_num != 0
WHERE sd.parent_id = 0
<if test="companyId != null">
and sd.dept_id = #{companyId}
</if>

View File

@ -0,0 +1,75 @@
<?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="com.bonus.material.device.mapper.MaDevQcMapper">
<delete id="deleteDevQcById">
delete from ma_dev_qc where id = #{id}
</delete>
<insert id="insertDevQc" useGeneratedKeys="true" keyProperty="id">
insert into ma_dev_qc
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="maId != null">ma_id,</if>
<if test="qcName != null and qcName != ''">qc_name,</if>
<if test="qcCode != null and qcCode != ''">qc_code,</if>
<if test="qcUser != null and qcUser != ''">qc_user,</if>
<if test="qcTime != null">qc_time,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="maId != null">#{maId},</if>
<if test="qcName != null and qcName != ''">#{qcName},</if>
<if test="qcCode != null and qcCode != ''">#{qcCode},</if>
<if test="qcUser != null and qcUser != ''">#{qcUser},</if>
<if test="qcTime != null">#{qcTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
</insert>
<select id="selectTaskNumByMonth" resultType="java.lang.String">
SELECT SUBSTRING(code, - 4) as code
FROM ma_dev_qc
WHERE DATE_FORMAT(create_time, '%y%m') = DATE_FORMAT(#{date}, '%y%m')
ORDER BY create_time DESC LIMIT 1
</select>
<select id="selectDevQcList" resultType="com.bonus.material.device.domain.MaDevQc">
select
m1.id,
m1.ma_id as maId,
m2.device_code as deviceCode,
m2.device_name as deviceName,
m1.qc_name as qcName,
m1.qc_code as qcCode,
m1.qc_user as qcUser,
m1.qc_time as qcTime,
su.nick_name as createBy,
m1.create_time as createTime
from ma_dev_qc m1
left join ma_dev_info m2 on m1.ma_id = m2.ma_id and m2.is_active = '1'
left join sys_user su on su.user_id = m1.create_by
<where>
<if test="deviceCode != null and deviceCode != ''">
and m2.device_code like concat('%',#{deviceCode},'%')
</if>
<if test="qcUser != null and qcUser != ''">
and m1.qc_user like concat('%',#{qcUser},'%')
</if>
<if test="qcCode != null and qcCode != ''">
and m1.qc_code like concat('%',#{qcCode},'%')
</if>
<if test="qcStartTime != null and qcStartTime != '' and qcEndTime != null and qcEndTime != ''">
and DATE_FORMAT(m1.qc_time,'%Y-%m-%d') between #{qcStartTime} and #{qcEndTime}
</if>
<if test="createStartTime != null and createStartTime != '' and createEndTime != null and createEndTime != ''">
and DATE_FORMAT(m1.create_time,'%Y-%m-%d') between #{createStartTime} and #{createEndTime}
</if>
</where>
</select>
</mapper>

View File

@ -13,7 +13,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="address != null and address != ''">address,</if>
<if test="areaCode != null">area_code,</if>
<if test="leaseStatus != null">lease_status,</if>
<if test="leaseDay != null">lease_day,</if>
<if test="leaseStartTime != null">lease_start_time,</if>
<if test="leaseEndTime != null ">lease_end_time,</if>
<if test="startTime != null">start_time,</if>
<if test="publishUser != null">publish_user,</if>
<if test="publishCompany != null">publish_company,</if>
@ -32,7 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="address != null">#{address},</if>
<if test="areaCode != null">#{areaCode},</if>
<if test="leaseStatus != null">#{leaseStatus},</if>
<if test="leaseDay != null ">#{leaseDay},</if>
<if test="leaseStartTime != null">#{leaseStartTime},</if>
<if test="leaseEndTime != null ">#{leaseEndTime},</if>
<if test="startTime != null">#{startTime},</if>
<if test="publishUser != null">#{publishUser},</if>
<if test="publishCompany != null">#{publishCompany},</if>
@ -57,12 +59,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="typeId != null">type_id,</if>
<if test="ids != null and ids != ''">type_ids,</if>
<if test="leaseNum != null">lease_num,</if>
<if test="description != null and description != ''">description,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="leaseId != null">#{leaseId},</if>
<if test="typeId != null">#{typeId},</if>
<if test="ids != null and ids != ''">#{ids},</if>
<if test="leaseNum != null ">#{leaseNum},</if>
<if test="description != null and description != ''">#{description},</if>
</trim>
</insert>
@ -73,7 +77,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="provinceCode != null">province_code = #{provinceCode},</if>
<if test="cityCode != null">city_code = #{cityCode},</if>
<if test="areaCode != null">area_code = #{areaCode},</if>
<if test="leaseDay != null ">lease_day = #{leaseDay},</if>
<if test="leaseStartTime != null ">lease_start_time = #{leaseStartTime},</if>
<if test="leaseEndTime != null ">lease_end_time = #{leaseEndTime},</if>
<if test="leaseStatus != null ">lease_status = #{leaseStatus},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="publishUser != null and publishUser != ''">publish_user = #{publishUser},</if>
@ -113,7 +118,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
m.lease_name as leaseName,
m.lease_code as leaseCode,
m.lease_status as leaseStatus,
m.lease_day as leaseDay,
m.lease_start_time as leaseStartTime,
m.lease_end_time as leaseEndTime,
m.start_time as startTime,
m.end_time as endTime,
m.person as person,
@ -183,7 +189,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
m.area_code as areaCode,
b.name as areaName,
m.address as address,
m.publish_user as publishUser,
m.publish_company as publishCompany
FROM
ma_lease_info m
@ -223,7 +228,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
m.lease_name AS leaseName,
m.lease_code AS leaseCode,
m.lease_status AS leaseStatus,
m.lease_day AS leaseDay,
m.lease_start_time AS leaseStartTime,
m.lease_end_time AS leaseEndTime,
m.start_time AS startTime,
m.end_time AS endTime,
m.person AS person,
@ -249,6 +255,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_dept sd ON m.publish_company = sd.dept_id
WHERE m.lease_status = '0'
<if test="companyId != null and companyId != ''"> and m.publish_company = #{companyId}</if>
<if test="cityCode != null"> and m.city_code = #{cityCode}</if>
<if test="keyWord != null and keyWord != ''">
and (
@ -268,12 +275,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="startTime != '' and startTime == 'DESC'">
,m.start_time DESC
</if>
<if test="rentDay != null and rentDay == 'ASC'">
<!--<if test="rentDay != null and rentDay == 'ASC'">
,m.lease_day
</if>
<if test="rentDay != null and rentDay == 'DESC'">
,m.lease_day DESC
</if>
</if>-->
<if test="endTime != '' and endTime == 'ASC'">
,m.end_time
</if>
@ -294,7 +301,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
m.lease_name as leaseName,
m.lease_code as leaseCode,
m.lease_status as leaseStatus,
m.lease_day as leaseDay,
m.lease_start_time as leaseStartTime,
m.lease_end_time as leaseEndTime,
m.start_time as startTime,
m.end_time as endTime,
m.person as person,
@ -348,6 +356,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mt4.type_name as typeName,
m.type_ids as ids,
m.lease_num as leaseNum,
m.description as description,
mt3.type_id as thirdId,
mt3.type_name as thirdName,
mt2.type_id as secondId,