领料联调

This commit is contained in:
mashuai 2025-06-02 17:49:51 +08:00
parent e1ae49f773
commit a3a8783f57
8 changed files with 89 additions and 28 deletions

View File

@ -316,4 +316,7 @@ public class LeaseApplyInfo extends BaseEntity{
@ApiModelProperty(value = "计量单位")
private String unitNames;
@ApiModelProperty(value = "是否电子签名 0 是1 否")
private Integer isElectronicSign;
}

View File

@ -342,6 +342,21 @@ public class LeaseApplyInfoController extends BaseController {
}
}
/**
* app领料出库提交
* @param leaseApplyDetails
* @return
*/
@ApiOperation(value = "app领料出库提交")
@PostMapping("/submitLeaseOut")
public AjaxResult submitLeaseOut(@RequestBody LeaseApplyDetails leaseApplyDetails) {
try {
return leaseApplyInfoService.submitLeaseOut(leaseApplyDetails);
} catch (Exception e) {
return error("系统错误, " + e.getMessage());
}
}
/**
* app领料出库退回
* @param leaseOutDetails

View File

@ -22,6 +22,11 @@ public class LeaseApplyDetails extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 是否第一次提交 0
*/
private Integer isSubmit;
/** ID */
private Long id;

View File

@ -206,4 +206,11 @@ public interface ILeaseApplyInfoService {
* @return
*/
List<LeaseApplyDetails> getOutNum(LeaseApplyDetails leaseApplyDetails);
/**
* app领料出库提交
* @param leaseApplyDetails
* @return
*/
AjaxResult submitLeaseOut(LeaseApplyDetails leaseApplyDetails);
}

View File

@ -151,27 +151,7 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
*/
@Override
public List<LeaseApplyInfo> selectLeaseApplyInfoList(LeaseApplyInfo leaseApplyInfo) {
//leaseApplyInfo.setUserId(SecurityUtils.getUserId());
List<LeaseApplyInfo> list = leaseApplyInfoMapper.selectLeaseApplyInfoList(leaseApplyInfo);
/*// 如果statusList包含345则为领料出库查询需查询领用出库数据进行拼接
if (!CollectionUtils.isEmpty(leaseApplyInfo.getStatusList())) {
if (leaseApplyInfo.getStatusList().contains(3) || leaseApplyInfo.getStatusList().contains(4) || leaseApplyInfo.getStatusList().contains(5)) {
// 查询领用出库数据
List<LeaseApplyInfo> leaseApplyOutList = leaseApplyInfoMapper.selectPublishList(leaseApplyInfo);
if (!CollectionUtils.isEmpty(leaseApplyOutList)) {
for (LeaseApplyInfo applyInfo : leaseApplyOutList) {
if (applyInfo.getPreCountNum().compareTo(applyInfo.getAlNum()) == 0) {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatusName());
} else {
applyInfo.setTaskStatus(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatus());
applyInfo.setTaskStatusName(LeaseTaskStatusEnum.LEASE_TASK_IN_PROGRESS.getStatusName());
}
}
list.addAll(leaseApplyOutList);
}
}
}*/
// 使用 Stream API 进行降序排序
List<LeaseApplyInfo> sortedList = list.stream()
.sorted(Comparator.comparing(LeaseApplyInfo::getCreateTime).reversed())
@ -183,9 +163,13 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
if (num == null) {
num = BigDecimal.ZERO;
}
applyInfo.setPreCountNum(applyInfo.getPreCountNum().add(num));
applyInfo.setAlNum(num);
applyInfo.setWaitCountNum(applyInfo.getPreCountNum().subtract(num).compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : applyInfo.getPreCountNum().subtract(num));
if (StringUtils.isNotBlank(applyInfo.getLeaseSignUrl())) {
applyInfo.setIsElectronicSign(0);
} else {
applyInfo.setIsElectronicSign(1);
}
}
String keyWord = leaseApplyInfo.getKeyWord();
// 如果关键字不为空进行过滤
@ -646,11 +630,12 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
// 处理已有数据的状态
list.forEach(applyDetails -> {
if (outNumMap.containsKey(applyDetails.getTypeId())) {
applyDetails.setStatus("1");
outNumMap.remove(applyDetails.getTypeId()); // 移除已匹配的项
outNumMap.remove(applyDetails.getTypeId());// 移除已匹配的项
if (applyDetails.getOutNum().compareTo(BigDecimal.ZERO) == 0){
applyDetails.setStatus("1");
}
}
});
// 添加outNumList中剩余的typeId对应数据
if (!outNumMap.isEmpty()) {
list.addAll(outNumMap.values());
@ -664,6 +649,42 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
return list;
}
@Override
public AjaxResult submitLeaseOut(LeaseApplyDetails leaseApplyDetails) {
// 第一次提交进行数据查询给予提醒
if (leaseApplyDetails.getIsSubmit() != null && leaseApplyDetails.getIsSubmit() == 0) {
List<LeaseApplyDetails> list = leaseApplyDetailsMapper.getOutNum(leaseApplyDetails);
// 根据id去出库表查询数据进行数据拼接
List<LeaseApplyDetails> outNumList = leaseApplyDetailsMapper.getOutNumList(leaseApplyDetails);
// 构建typeId到LeaseApplyDetails的映射用于快速查找
Map<Long, LeaseApplyDetails> outNumMap = outNumList.stream()
.collect(Collectors.toMap(LeaseApplyDetails::getTypeId, details -> details, (existing, replacement) -> existing));
if (!CollectionUtils.isEmpty(list)) {
// 处理已有数据的状态
list.forEach(applyDetails -> {
if (outNumMap.containsKey(applyDetails.getTypeId()) && applyDetails.getOutNum().compareTo(BigDecimal.ZERO) == 0) {
applyDetails.setStatus("1");
outNumMap.remove(applyDetails.getTypeId());
}
});
// 添加outNumList中剩余的typeId对应数据
if (!outNumMap.isEmpty()) {
list.addAll(outNumMap.values());
}
}
// 判断list中status状态是否全部为1 已完成
if (list.size() > list.stream().filter(item -> "1".equals(item.getStatus())).count()) {
return AjaxResult.success("该领料单有未出库领料数据,请确认是否提交");
} else {
return AjaxResult.success("该领料单无未出库领料数据,请确认是否提交");
}
}
String taskId = leaseApplyInfoMapper.getTaskId(leaseApplyDetails.getId());
int result = tmTaskMapper.updateTaskStatus(taskId, LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus());
return result == 1 ? AjaxResult.success("提交成功") : AjaxResult.error("提交失败");
}
/**
* 总站点领料记录数据过滤
* @param item
@ -860,6 +881,8 @@ public class LeaseApplyInfoServiceImpl implements ILeaseApplyInfoService {
*/
@Override
public int updateLeaseApplyInfoSign(LeaseApplyInfo leaseApplyInfo) {
leaseApplyInfo.setUpdateBy( SecurityUtils.getUserId().toString());
leaseApplyInfo.setUpdateTime(DateUtils.getNowDate());
return leaseApplyInfoMapper.updateLeaseApplyInfoSign(leaseApplyInfo);
}

View File

@ -188,7 +188,7 @@ public class LeaseOutDetailsServiceImpl implements ILeaseOutDetailsService {
throw new RuntimeException("出库失败,更新设备规格库存数量时出错!");
}
// 4修改任务状态tm_task
if (record.getIsApp() != null && record.getIsApp() == 0) {
/*if (record.getIsApp() != null && record.getIsApp() == 0) {
LeaseApplyDetails leaseApplyDetails = new LeaseApplyDetails();
leaseApplyDetails.setId(record.getParentId());
List<LeaseApplyDetails> list = leaseApplyDetailsMapper.getOutNum(leaseApplyDetails);
@ -200,7 +200,7 @@ public class LeaseOutDetailsServiceImpl implements ILeaseOutDetailsService {
if (!CollectionUtils.isEmpty(list)) {
// 处理已有数据的状态
list.forEach(applyDetails -> {
if (outNumMap.containsKey(applyDetails.getTypeId())) {
if (outNumMap.containsKey(applyDetails.getTypeId()) && applyDetails.getOutNum().compareTo(BigDecimal.ZERO) == 0) {
applyDetails.setStatus("1");
outNumMap.remove(applyDetails.getTypeId()); // 移除已匹配的项
}
@ -220,7 +220,7 @@ public class LeaseOutDetailsServiceImpl implements ILeaseOutDetailsService {
}
if (res == 0) {
throw new RuntimeException("出库失败,修改任务状态失败");
}
}*/
// 5插入结算记录
String taskId = leaseApplyInfoMapper.getTaskId(record.getParentId());
record.setTaskId(taskId);

View File

@ -277,7 +277,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id AND mt1.del_flag = '0'
LEFT JOIN ma_station_code ms ON mm.ma_code = ms.ma_code
where
ms.ma_qrcode = #{qrCode}
ms.ma_qrcode = #{qrCode}
<if test="typeId != null and typeId != ''">
and mt.type_id = #{typeId}
</if>
</select>
<select id="getCodeList" resultType="com.bonus.material.back.domain.vo.MaCodeVo">
@ -724,6 +727,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY mt.type_id) AS subquery0 ON subquery0.type_id = mt.type_id
WHERE
lad.parent_id = #{id}
<if test="typeId != null and typeId != ''">
AND lad.type_id = #{typeId}
</if>
GROUP BY
lad.parent_id,
lad.type_id;

View File

@ -225,6 +225,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="leaseSignUrl != null and leaseSignUrl != '' ">lease_sign_url = #{leaseSignUrl},</if>
<if test="leaseSignType != null">lease_sign_type = #{leaseSignType},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>