库存日志记录

This commit is contained in:
mashuai 2024-12-20 19:46:20 +08:00
parent e710a3df1c
commit 1bcd5b8993
6 changed files with 121 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import com.bonus.common.biz.domain.BmStorageLog;
import com.bonus.common.biz.domain.lease.LeaseOutDetails;
import com.bonus.common.biz.domain.lease.LeaseOutRequestVo;
import com.bonus.common.biz.domain.purchase.PurchaseDto;
import com.bonus.common.biz.domain.repair.RepairInputDetails;
import com.bonus.common.biz.enums.InputOutEnum;
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
import com.bonus.common.biz.service.AsyncStoreLogService;
@ -25,7 +26,6 @@ import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
@ -172,6 +172,25 @@ public class StoreLogAspect {
bmStorageLog.setOutType(InputOutEnum.CODE_DEVICE.getTypeId());
bmStorageLogList.add(bmStorageLog);
}
//标准箱
if (leaseOutDetails.getManageType().equals(InputOutEnum.STANDARD_BOX.getTypeId())) {
BmStorageLog bmStorageLog = new BmStorageLog();
bmStorageLog.setTaskId(String.valueOf(leaseOutDetails.getParentId()));
bmStorageLog.setTypeId(leaseOutDetails.getTypeId());
bmStorageLog.setTypeName(leaseOutDetails.getTypeName());
bmStorageLog.setManageType(String.valueOf(leaseOutDetails.getManageType()));
bmStorageLog.setTypeModelName(leaseOutDetails.getTypeModelName());
String maCode = lod.getLeaseOutDetailsList().stream()
.map(LeaseOutDetails::getMaCode)
.filter(Objects::nonNull)
.collect(Collectors.joining(","));
bmStorageLog.setMaCode(maCode);
bmStorageLog.setPreStoreNum(leaseOutDetails.getPreStoreNum());
bmStorageLog.setOutNum(BigDecimal.valueOf(lod.getLeaseOutDetailsList().size()));
bmStorageLog.setPostStoreNum(leaseOutDetails.getPreStoreNum().subtract(bmStorageLog.getOutNum()));
bmStorageLog.setOutType(InputOutEnum.STANDARD_BOX.getTypeId());
bmStorageLogList.add(bmStorageLog);
}
}
// 新购验收任务
if (joinPoint.getArgs()[0] instanceof PurchaseDto) {
@ -203,7 +222,58 @@ public class StoreLogAspect {
bmStorageLogList.add(bmStorageLog);
}
//修饰入库库存变化 /repair_input_details/warehouse
if (joinPoint.getArgs()[0] instanceof RepairInputDetails) {
RepairInputDetails repairInputDetails = (RepairInputDetails) joinPoint.getArgs()[0];
if (repairInputDetails.getTaskId() != null && repairInputDetails.getTypeId() != null && CollectionUtils.isEmpty(repairInputDetails.getTaskIdList())) {
// 内层入库
BmStorageLog bmStorageLog = new BmStorageLog();
bmStorageLog.setTaskId(String.valueOf(repairInputDetails.getTaskId()));
bmStorageLog.setTypeId(repairInputDetails.getTypeId());
bmStorageLog.setPreStoreNum(repairInputDetails.getPreStoreNum());
// 编码类型入库
if (CollectionUtils.isNotEmpty(repairInputDetails.getMaCodeList())) {
bmStorageLog.setManageType(String.valueOf(InputOutEnum.CODE_DEVICE.getTypeId()));
bmStorageLog.setInNum(BigDecimal.valueOf(repairInputDetails.getMaCodeList().size()));
String maCode = repairInputDetails.getMaCodeList().stream()
.filter(Objects::nonNull)
.map(RepairInputDetails::getMaCode)
.collect(Collectors.joining(","));
bmStorageLog.setMaCode(maCode);
bmStorageLog.setInputType(InputOutEnum.CODE_DEVICE.getTypeId());
} else {
bmStorageLog.setManageType(String.valueOf(InputOutEnum.NUMBER_DEVICE.getTypeId()));
bmStorageLog.setInNum(repairInputDetails.getInputNum());
bmStorageLog.setInputType(InputOutEnum.NUMBER_DEVICE.getTypeId());
}
bmStorageLog.setPostStoreNum(repairInputDetails.getPreStoreNum().add(bmStorageLog.getInNum()));
bmStorageLogList.add(bmStorageLog);
// 外层入库
} else if (CollectionUtils.isNotEmpty(repairInputDetails.getTaskIdList())) {
for (RepairInputDetails inputDetails : repairInputDetails.getDetailsList()) {
BmStorageLog bmStorageLog = new BmStorageLog();
bmStorageLog.setTaskId(String.valueOf(inputDetails.getTaskId()));
bmStorageLog.setTypeId(inputDetails.getTypeId());
bmStorageLog.setPreStoreNum(inputDetails.getPreStoreNum());
bmStorageLog.setInNum(inputDetails.getPendingInputNum());
// 编码类型入库
if (inputDetails.getManageType().equals(String.valueOf(InputOutEnum.CODE_DEVICE.getTypeId()))) {
bmStorageLog.setManageType(String.valueOf(InputOutEnum.CODE_DEVICE.getTypeId()));
String maCode = inputDetails.getMaCodeList().stream()
.filter(Objects::nonNull)
.map(RepairInputDetails::getMaCode)
.collect(Collectors.joining(","));
bmStorageLog.setMaCode(maCode);
bmStorageLog.setInputType(InputOutEnum.CODE_DEVICE.getTypeId());
// 数量类型入库
} else if (inputDetails.getManageType().equals(String.valueOf(InputOutEnum.NUMBER_DEVICE.getTypeId()))) {
bmStorageLog.setManageType(String.valueOf(InputOutEnum.NUMBER_DEVICE.getTypeId()));
bmStorageLog.setInputType(InputOutEnum.NUMBER_DEVICE.getTypeId());
}
bmStorageLog.setPostStoreNum(inputDetails.getPreStoreNum().add(bmStorageLog.getInNum()));
bmStorageLogList.add(bmStorageLog);
}
}
}
}
}
}

View File

@ -131,6 +131,8 @@ public class RepairInputDetails extends BaseEntity {
@ApiModelProperty(value = "协议号")
private Integer agreementId;
private String manageType;
/**
* 关键字
*/
@ -156,4 +158,7 @@ public class RepairInputDetails extends BaseEntity {
@ApiModelProperty(value = "编码列表")
private List<RepairInputDetails> maCodeList;
@ApiModelProperty(value = "详情列表")
private List<RepairInputDetails> detailsList;
}

View File

@ -194,13 +194,13 @@ public class LeaseOutDetailsServiceImpl implements ILeaseOutDetailsService {
if (res == 0) {
throw new RuntimeException("出库失败,插入结算记录失败");
}
if (record.getManageType().equals(InputOutEnum.STANDARD_BOX.getTypeId())) {
/*if (record.getManageType().equals(InputOutEnum.STANDARD_BOX.getTypeId())) {
// 6如果标准箱入库需要将设备从标准箱移出
res = updateBoxBind(record);
if (res == 0) {
throw new RuntimeException("出库失败,移出设备失败");
}
}
}*/
} else {
return AjaxResult.error("领料出库失败,机具库存不足");
}

View File

@ -115,4 +115,11 @@ public interface RepairInputDetailsMapper {
* @return
*/
Long selectBackIdByTaskId(Long taskId);
/**
* 根据任务id集合查询维修详情
* @param taskIdList
* @return
*/
List<RepairInputDetails> selectRepairDetails(@Param("list") List<Long> taskIdList);
}

View File

@ -172,6 +172,14 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService
// 内层入库
result += processInnerStorage(repairInputDetails);
} else if (CollectionUtils.isNotEmpty(repairInputDetails.getTaskIdList())) {
// 查询外层任务列表仅供库存日志使用
List<RepairInputDetails> list = repairInputDetailsMapper.selectRepairDetails(repairInputDetails.getTaskIdList());
if (CollectionUtils.isNotEmpty(list)) {
for (RepairInputDetails inputDetails : list) {
repairInputDetails.setPreStoreNum(getStorageNum(inputDetails));
}
}
repairInputDetails.setDetailsList(list);
// 外层入库
result += processOuterStorage(repairInputDetails);
}

View File

@ -189,6 +189,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
rid.task_id = #{taskId}
</select>
<select id="selectRepairDetails" resultType="com.bonus.common.biz.domain.repair.RepairInputDetails">
SELECT
rd.task_id AS taskId,
rd.type_id AS typeId,
rd.repair_num AS repairNum,
rd.input_num AS inputNum,
SUM((
IFNULL( rd.repair_num, 0 ) - IFNULL( rd.input_num, 0 ) - IFNULL( rd.reject_num, 0 ))) AS pendingInputNum,
rd.reject_num AS rejectNum,
mt.manage_type AS manageType,
GROUP_CONCAT( mm.ma_code ) AS maCode
FROM
repair_input_details rd
LEFT JOIN ma_type mt ON rd.type_id = mt.type_id
AND mt.del_flag = '0'
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id
AND mt1.del_flag = '0'
LEFT JOIN ma_machine mm ON mm.ma_id = rd.ma_id
WHERE
rd.task_id IN
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
mt.type_id
</select>
<insert id="batchInsertRepairInputDetails" parameterType="com.bonus.common.biz.domain.repair.RepairInputDetails">
insert into repair_input_details
(task_id, audit_id, repair_id, ma_id, type_id, repair_num, input_num, create_by, create_time,