新购验收绑定逻辑优化

This commit is contained in:
syruan 2024-12-26 18:10:24 +08:00
parent 660c43592b
commit 4493caf705
4 changed files with 52 additions and 39 deletions

View File

@ -41,6 +41,12 @@ public interface PurchaseBindMapper {
*/
List<PurchaseDto> selectByCode(PurchaseDto purchaseDto);
/**
* 判断QrCode二维码是否绑定
* @return true 已绑定 false 未绑定
*/
boolean checkQrCodeIsBind(String qrCode);
/**
* 新增绑定信息
* @param purchaseDto

View File

@ -107,15 +107,14 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
*/
@Override
public List<PurchaseVo> getDetails(PurchaseDto dto) {
List<PurchaseVo> list = purchaseBindMapper.getDetails(dto);
Map<String, String> labelMap = remoteConfig.getDictValue("purchase_task_status");
final List<PurchaseVo> list = purchaseBindMapper.getDetails(dto);
final Map<String, String> labelMap = remoteConfig.getDictValue("purchase_task_status");
if (CollectionUtils.isNotEmpty(list)) {
for (PurchaseVo purchaseVo : list) {
for (final PurchaseVo purchaseVo : list) {
// 更新状态名称
Integer status = purchaseVo.getStatus();
if (status != null) {
String dictValue = labelMap.get(status.toString());
purchaseVo.setStatusName(dictValue);
final Integer status = purchaseVo.getStatus();
if (null != status) {
purchaseVo.setStatusName(labelMap.get(status.toString()));
}
}
}
@ -131,48 +130,51 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
@Transactional(rollbackFor = Exception.class)
public AjaxResult bind(PurchaseDto dto) {
//先查询提交的编码中是否存在重复提交
long distinctCodes = dto.getDtoList().stream().map(PurchaseDto::getMaCode).distinct().count();
final long distinctCodes = dto.getDtoList().stream().map(PurchaseDto::getMaCode).distinct().count();
if (distinctCodes < dto.getDtoList().size()) {
return AjaxResult.error(1113,"提交的数据中设备编码存在重复,请勿重复添加");
}
for (PurchaseDto purchaseDto : dto.getDtoList()) {
for (final PurchaseDto purchaseDto : dto.getDtoList()) {
//根据设备编码唯一校验
List<PurchaseDto> tbBdDeviceRecord = purchaseBindMapper.selectByCode(purchaseDto);
final List<PurchaseDto> tbBdDeviceRecord = purchaseBindMapper.selectByCode(purchaseDto);
if (purchaseBindMapper.checkQrCodeIsBind(purchaseDto.getQrCode())) {
return AjaxResult.error(1114,"二维码已绑定物资,请勿重复绑定");
}
if (CollectionUtils.isNotEmpty(tbBdDeviceRecord)) {
return AjaxResult.error(1114,"设备编码与库中重复,请勿重复添加");
}
}
for (PurchaseDto purchaseDto : dto.getDtoList()) {
for (final PurchaseDto purchaseDto : dto.getDtoList()) {
purchaseDto.setCreateBy(SecurityUtils.getUserId().toString()).setCreateTime(DateUtils.getNowDate());
purchaseDto.setTaskId(dto.getTaskId()).setTypeId(dto.getTypeId()).setStatus(0);
if (purchaseDto.getQrCode() != null) {
if (purchaseBindMapper.bindMaCodeByQrCode(purchaseDto) != 1) {
if (null != purchaseDto.getQrCode()) {
if (1 != purchaseBindMapper.bindMaCodeByQrCode(purchaseDto)) {
return AjaxResult.error(1115,"绑定maCode时SQL执行失败!");
}
} else {
if (dto.getTypeId() != null) {
if (null != dto.getTypeId()) {
purchaseDto.setTypeId(dto.getTypeId());
}
purchaseBindMapper.insert(purchaseDto);
}
if (purchaseStorageMapper.insertMachine(purchaseDto) != 1) {
if (1 != purchaseStorageMapper.insertMachine(purchaseDto)) {
return AjaxResult.error(1116,"插入maMachine时SQL执行失败!");
}
}
// 更新绑定数量并刷新状态
if (purchaseBindMapper.updateNum(dto, dto.getDtoList().size()) < 1) {
if (1 > purchaseBindMapper.updateNum(dto, dto.getDtoList().size())) {
return AjaxResult.error(1117,"更新绑定数量时SQL执行失败!");
} else {
purchaseBindMapper.updateStatusWhereNum(dto);
}
//根据任务id和类型id查询状态
List<PurchaseVo> voList = purchaseBindMapper.selectPurchaseCheckInfoById(dto);
final List<PurchaseVo> voList = purchaseBindMapper.selectPurchaseCheckInfoById(dto);
if (CollectionUtils.isNotEmpty(voList)) {
for (PurchaseVo purchaseVo : voList) {
if (purchaseVo.getBindNum().compareTo(purchaseVo.getCheckNum()) == 0) {
for (final PurchaseVo purchaseVo : voList) {
if (0 == purchaseVo.getBindNum().compareTo(purchaseVo.getCheckNum())) {
purchaseBindMapper.updateStatusById(PurchaseTaskStatusEnum.TO_STORE.getStatus(), purchaseVo.getPurchaseId());
} else if (purchaseVo.getBindNum().compareTo(purchaseVo.getCheckNum()) < 0) {
} else if (0 > purchaseVo.getBindNum().compareTo(purchaseVo.getCheckNum())) {
purchaseBindMapper.updateStatusById(PurchaseTaskStatusEnum.TO_BIND.getStatus(), purchaseVo.getPurchaseId());
} else {
// 抛出异常 执行回滚

View File

@ -469,7 +469,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
*/
@Override
public int outerAudit(@NotNull List<RepairAuditDetails> repairAuditDetails) {
List<Long> taskIds = repairAuditDetails.stream()
final List<Long> taskIds = repairAuditDetails.stream()
.filter(Objects::nonNull)
.map(RepairAuditDetails::getTaskId)
.filter(Objects::nonNull)
@ -477,20 +477,21 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
if (taskIds.isEmpty()) {
return 0;
}
List<RepairAuditDetails> repairAuditDetailsByQuery = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskIds(taskIds);
final List<RepairAuditDetails> repairAuditDetailsByQuery = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskIds(taskIds);
if (CollectionUtils.isEmpty(repairAuditDetailsByQuery)) {
return 0;
}
String status = repairAuditDetails.get(0).getStatus(); // 1通过 2驳回
// 1:通过 2:驳回 0:未处理
final String status = repairAuditDetails.get(0).getStatus();
if ("1".equals(status)) {
for (RepairAuditDetails repairAuditDetail : repairAuditDetails) {
for (final RepairAuditDetails repairAuditDetail : repairAuditDetails) {
// 删除repair_input_details 维修入库明细
repairInputDetailsMapper.deleteRepairInputDetailsByTaskId(repairAuditDetail.getTaskId());
// 查询协议ID
Long agreementId = taskAgreementMapper.selectAgreementIdByTaskId(repairAuditDetail.getTaskId());
// 查询维修审核明细
List<RepairAuditDetails> repairAuditDetailList = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskIds(Collections.singletonList(repairAuditDetail.getTaskId()));
final List<RepairAuditDetails> repairAuditDetailList = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskIds(Collections.singletonList(repairAuditDetail.getTaskId()));
batchInsertRepairInputDetails(repairAuditDetailList, agreementId);
taskMapper.updateTaskStatus(String.valueOf(repairAuditDetail.getTaskId()), RepairTaskStatusEnum.TASK_STATUS_REVIEW.getStatus());
}
@ -503,15 +504,14 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
}
}
try {
List<Long> ids = repairAuditDetailsByQuery.stream()
final List<Long> ids = repairAuditDetailsByQuery.stream()
.filter(Objects::nonNull)
.map(RepairAuditDetails::getId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
return repairAuditDetailsMapper.updateRepairAuditDetailsBatch(ids, String.valueOf(status));
} catch (Exception e) {
} catch (final Exception e) {
throw new ServiceException("错误信息描述");
}
}
@ -532,13 +532,14 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
if (ids.isEmpty()) {
return 0;
}
String status = repairAuditDetails.get(0).getStatus(); // 1通过 2驳回
final RepairAuditDetails auditDetails1 = repairAuditDetails.get(0);
final String status = auditDetails1.getStatus(); // 1通过 2驳回
if ("1".equals(status)) {
//根据任务id查询协议id
Long agreementId = taskAgreementMapper.selectAgreementIdByTaskId(repairAuditDetails.get(0).getTaskId());
final Long agreementId = taskAgreementMapper.selectAgreementIdByTaskId(auditDetails1.getTaskId());
batchInsertRepairInputDetails(repairAuditDetails, agreementId);
} else if ("2".equals(status)) {
for (RepairAuditDetails auditDetails : repairAuditDetails) {
for (final RepairAuditDetails auditDetails : repairAuditDetails) {
repairApplyDetailsMapper.updateRepairApplyDetailsAfterReject(
ObjectUtils.defaultIfNull(auditDetails.getRepairedNum(),0).longValue(),
ObjectUtils.defaultIfNull(auditDetails.getScrapNum(),0).longValue(), auditDetails.getRepairId());
@ -547,7 +548,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
try {
return repairAuditDetailsMapper.updateRepairAuditDetailsBatch(ids, status);
} catch (Exception e) {
} catch (final Exception e) {
throw new ServiceException("错误信息描述");
}
}
@ -560,21 +561,21 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
private void batchInsertRepairInputDetails(List<RepairAuditDetails> repairAuditDetailsByQuery, Long agreementId) {
//插入任务表
Long newTaskId = insertTt();
final Long newTaskId = insertTt();
insertTta(newTaskId, agreementId);
List<RepairInputDetails> inputList = new ArrayList<>();
for (RepairAuditDetails details : repairAuditDetailsByQuery) {
final List<RepairInputDetails> inputList = new ArrayList<>();
for (final RepairAuditDetails details : repairAuditDetailsByQuery) {
//修改机具状态
if (details.getMaId() != null) {
if (null != details.getMaId()) {
repairAuditDetailsMapper.updateMachine(details);
}
RepairInputDetails inputVo = new RepairInputDetails();
final RepairInputDetails inputVo = new RepairInputDetails();
BeanUtils.copyProperties(details, inputVo);
inputVo.setRepairNum(details.getRepairedNum());
inputVo.setAuditId(details.getId());
inputVo.setStatus("0");
inputVo.setTaskId(newTaskId);
inputVo.setCreateBy(SecurityUtils.getUserId().toString());
inputVo.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
inputList.add(inputVo);
}
// 插入维修入库明细
@ -587,7 +588,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
* @param agreementId
*/
private void insertTta(Long newTaskId, Long agreementId) {
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTaskId, agreementId);
final TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTaskId, agreementId);
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(SecurityUtils.getUsername());
taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);

View File

@ -382,4 +382,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and ma_code is null
and del_flag = '0'
</update>
<select id="checkQrCodeIsBind" resultType="boolean">
select count(1) > 0 from bm_qrcode_info where qr_code = #{qrCode} and is_bind = '1' and del_flag = '0'
</select>
</mapper>