This commit is contained in:
parent
12bb2ed637
commit
3d6a274eed
|
|
@ -15,7 +15,7 @@ public enum PurchaseTaskStatusEnum {
|
|||
TO_CHECK(2, "待验收", PurchaseTaskStageEnum.CHECK.getCode()),
|
||||
TO_BIND(3, "待绑定", PurchaseTaskStageEnum.BIND.getCode()),
|
||||
TO_STORE(4, "待入库", PurchaseTaskStageEnum.STORE.getCode()),
|
||||
TO_CHECK_AFTER_REJECT(12, "验收(被驳回)", PurchaseTaskStageEnum.MANAGE.getCode()),
|
||||
TO_CHECK_AFTER_REJECT(12, "验收(被驳回)", PurchaseTaskStageEnum.CHECK.getCode()),
|
||||
TO_BIND_AFTER_REJECT(13, "绑定(被驳回)", PurchaseTaskStageEnum.CHECK.getCode()),
|
||||
TO_STORE_AFTER_REJECT(14, "入库(被驳回)", PurchaseTaskStageEnum.BIND.getCode()),
|
||||
IN_STORE(19, "已入库", PurchaseTaskStageEnum.STORE.getCode()),
|
||||
|
|
|
|||
|
|
@ -103,4 +103,7 @@ public class BmQrBoxInfo extends BaseEntity
|
|||
@ApiModelProperty(value = "标准箱信息")
|
||||
private String msg;
|
||||
|
||||
@ApiModelProperty(value = "任务ID")
|
||||
private String taskId;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,4 +115,11 @@ public interface BmQrBoxMapper {
|
|||
* @return
|
||||
*/
|
||||
List<BmQrBoxInfo> getBoxCodeList(BmQrBoxInfo bmQrBoxInfo);
|
||||
|
||||
/**
|
||||
* 查询在库信息
|
||||
* @param bmQrBoxInfo
|
||||
* @return
|
||||
*/
|
||||
List<BmQrBoxInfo> getBoxBindListById(BmQrBoxInfo bmQrBoxInfo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.bonus.material.basic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import com.bonus.common.biz.config.BackstageApplication;
|
||||
import com.bonus.common.biz.config.DateTimeHelper;
|
||||
import com.bonus.common.biz.config.QrCodeUtils;
|
||||
|
|
@ -20,10 +21,14 @@ import com.bonus.material.basic.mapper.BmQrBoxMapper;
|
|||
import com.bonus.material.basic.service.BmQrBoxService;
|
||||
import com.bonus.material.ma.domain.vo.MachineVo;
|
||||
import com.bonus.material.ma.mapper.MachineMapper;
|
||||
import com.bonus.material.purchase.domain.PurchaseCheckDetails;
|
||||
import com.bonus.material.purchase.domain.vo.PurchaseVo;
|
||||
import com.bonus.material.purchase.mapper.PurchaseBindMapper;
|
||||
import com.bonus.material.purchase.mapper.PurchaseStorageMapper;
|
||||
import com.bonus.material.task.mapper.TmTaskMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
|
|
@ -34,6 +39,7 @@ import java.math.BigDecimal;
|
|||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author ma_sh
|
||||
|
|
@ -55,6 +61,9 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
|
|||
@Resource
|
||||
private PurchaseStorageMapper purchaseStorageMapper;
|
||||
|
||||
@Resource
|
||||
private TmTaskMapper tmTaskMapper;
|
||||
|
||||
/**
|
||||
* 查询二维码标准箱管理列表
|
||||
*/
|
||||
|
|
@ -287,13 +296,52 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
|
|||
* @param bmQrBoxInfo 标准箱信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult appReceive(BmQrBoxInfo bmQrBoxInfo) {
|
||||
int result = 0;
|
||||
// 用来存储每个 taskId 的出现次数
|
||||
Map<String, Integer> taskIdCountMap = new HashMap<>();
|
||||
final List<BmQrBoxInfo> bmQrBoxInfos = bmQrBoxMapper.find(new BmQrBoxInfo().setBoxId(bmQrBoxInfo.getBoxId()));
|
||||
if (!bmQrBoxInfos.isEmpty()) {
|
||||
final BmQrBoxInfo item = bmQrBoxInfos.get(0);
|
||||
if (null == item.getTransferUser() || !Objects.equals(item.getTransferUser(), SecurityUtils.getUserId())) {
|
||||
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "接收失败,当前操作非移交人,无法接收!");
|
||||
}
|
||||
List<BmQrBoxInfo> list = bmQrBoxMapper.getBoxBindListById(bmQrBoxInfo);
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
//修改机具状态为在库
|
||||
for (BmQrBoxInfo qrBoxInfo : list) {
|
||||
result += machineMapper.updateStatus(qrBoxInfo.getMaId(), MaMachineStatusEnum.IN_STORE.getStatus());
|
||||
String taskId = qrBoxInfo.getTaskId();
|
||||
Long typeId = qrBoxInfo.getMaTypeId();
|
||||
// 使用 taskId 和 typeId 拼接成复合键
|
||||
String key = taskId + "_" + typeId;
|
||||
taskIdCountMap.put(key, taskIdCountMap.getOrDefault(key, 0) + 1);
|
||||
}
|
||||
//根据taskId机器数量,更新入库数量
|
||||
if (result > 0) {
|
||||
for (Map.Entry<String, Integer> entry : taskIdCountMap.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
int count = entry.getValue();
|
||||
String[] parts = key.split("_");
|
||||
String taskId = parts[0];
|
||||
Long typeId = Long.parseLong(parts[1]);
|
||||
result += purchaseBindMapper.updatePurchaseBindByTaskIdAndTypeId(taskId, typeId, count);
|
||||
result += purchaseStorageMapper.updateStorageNum(BigDecimal.valueOf(count), typeId.intValue());
|
||||
PurchaseDto purchaseDto = new PurchaseDto();
|
||||
purchaseDto.setTaskId(taskId);
|
||||
purchaseDto.setTypeId(typeId.intValue());
|
||||
List<PurchaseCheckDetails> bindMaList = purchaseBindMapper.getMachineById(purchaseDto);
|
||||
if (CollectionUtils.isNotEmpty(bindMaList)) {
|
||||
result += purchaseStorageMapper.updatePurchaseBindByTaskIdAndTypeId(PurchaseTaskStatusEnum.TO_STORE.getStatus(), taskId, typeId);
|
||||
} else {
|
||||
result += purchaseStorageMapper.updatePurchaseBindBy(PurchaseTaskStatusEnum.IN_STORE.getStatus(), taskId, typeId);
|
||||
}
|
||||
List<PurchaseVo> statusList = purchaseStorageMapper.select(taskId);
|
||||
result += updateTaskStatus(statusList);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "接收失败,无此标准箱信息!");
|
||||
}
|
||||
|
|
@ -305,6 +353,29 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
|
|||
AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务状态
|
||||
* @param details
|
||||
* @return
|
||||
*/
|
||||
private int updateTaskStatus(List<PurchaseVo> details) {
|
||||
Map<Integer, List<Integer>> groupedByIdStatus = details.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
PurchaseVo::getTaskId,
|
||||
Collectors.mapping(PurchaseVo::getStatus, Collectors.toList())
|
||||
));
|
||||
return groupedByIdStatus.entrySet().stream()
|
||||
.mapToInt(entry -> {
|
||||
Integer id = entry.getKey();
|
||||
List<Integer> statusList = entry.getValue();
|
||||
if (!statusList.contains(PurchaseTaskStatusEnum.TO_STORE.getStatus()) && !statusList.contains(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus())
|
||||
&& statusList.stream().allMatch(status -> status.equals(PurchaseTaskStatusEnum.IN_STORE.getStatus()))) {
|
||||
return tmTaskMapper.updateTaskStatus(id.toString(), PurchaseTaskStatusEnum.TASK_FINISHED.getStatus());
|
||||
}
|
||||
return 0;
|
||||
}).sum();
|
||||
}
|
||||
|
||||
/**
|
||||
* APP - 扫码创建标准箱
|
||||
*
|
||||
|
|
|
|||
|
|
@ -117,4 +117,13 @@ public interface PurchaseBindMapper {
|
|||
* @return
|
||||
*/
|
||||
List<PurchaseVo> selectPurchaseCheckDetailsById(PurchaseDto purchaseDto);
|
||||
|
||||
/**
|
||||
* 更改状态
|
||||
* @param taskId
|
||||
* @param typeId
|
||||
* @param count
|
||||
* @return
|
||||
*/
|
||||
int updatePurchaseBindByTaskIdAndTypeId(@Param("taskId") String taskId,@Param("typeId") Long typeId,@Param("count") int count);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,4 +82,22 @@ public interface PurchaseStorageMapper {
|
|||
int updateMachineByCode(PurchaseDto dto);
|
||||
|
||||
Long selectIdByTaskId(@Param("taskId") Long taskId, @Param("typeId") Long typeId);
|
||||
|
||||
/**
|
||||
* 更新机具绑定状态
|
||||
* @param status
|
||||
* @param taskId
|
||||
* @param typeId
|
||||
* @return
|
||||
*/
|
||||
int updatePurchaseBindByTaskIdAndTypeId(@Param("status") Integer status, @Param("taskId") String taskId, @Param("typeId") Long typeId);
|
||||
|
||||
/**
|
||||
* 更新机具绑定状态
|
||||
* @param status
|
||||
* @param taskId
|
||||
* @param typeId
|
||||
* @return
|
||||
*/
|
||||
int updatePurchaseBindBy(@Param("status") Integer status, @Param("taskId") String taskId, @Param("typeId") Long typeId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.bonus.common.biz.constant.MaterialConstants;
|
|||
import com.bonus.common.biz.enums.HttpCodeEnum;
|
||||
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
|
||||
import com.bonus.common.biz.enums.PurchaseTaskStatusEnum;
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.common.core.utils.DateUtils;
|
||||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
|
|
@ -162,7 +163,7 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
|
|||
return AjaxResult.error(1116,"插入maMachine时SQL执行失败!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return AjaxResult.error(1116,"插入maMachine时SQL执行失败!,检查编码是否重复");
|
||||
throw new ServiceException(e.getMessage() + "插入maMachine时SQL执行失败!");
|
||||
}
|
||||
}
|
||||
// 更新绑定数量,并刷新状态
|
||||
|
|
|
|||
|
|
@ -161,4 +161,7 @@ public class ScrapApplyDetails extends BaseEntity {
|
|||
|
||||
/** 报废备注 */
|
||||
private String scrapRemark;
|
||||
|
||||
@ApiModelProperty(value = "关键字")
|
||||
private String keyWord;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
bqb.create_time as createTime,
|
||||
bqb.update_by as updateBy,
|
||||
bqb.update_time as updateTime,
|
||||
bqb.transfer_user,bqb.input_user,
|
||||
bqb.transfer_user as transferUser,
|
||||
bqb.input_user as inputUser,
|
||||
mm.type_id as maTypeId,
|
||||
COUNT(qbb.box_id) as devNum
|
||||
from bm_qrcode_box bqb
|
||||
|
|
@ -73,7 +74,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
qb.id as id,qb.box_id as boxId,qb.create_by as createBy,
|
||||
mt1.type_name as typeName,
|
||||
mt.type_name as typeModelName,
|
||||
mm.ma_id as maId,mm.ma_code as maCode,mm.type_id as maTypeId
|
||||
mm.ma_id as maId,mm.ma_code as maCode,mm.type_id as maTypeId,
|
||||
mm.buy_task as taskId
|
||||
FROM
|
||||
bm_qrcode_box_bind qb
|
||||
LEFT JOIN ma_machine mm ON qb.ma_id = mm.ma_id
|
||||
|
|
@ -268,4 +270,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
group by
|
||||
qbb.box_id LIMIT 1
|
||||
</select>
|
||||
|
||||
<select id="getBoxBindListById" resultType="com.bonus.material.basic.domain.BmQrBoxInfo">
|
||||
SELECT
|
||||
qb.id as id,qb.box_id as boxId,qb.create_by as createBy,
|
||||
mt1.type_name as typeName,
|
||||
mt.type_name as typeModelName,
|
||||
mm.ma_id as maId,mm.ma_code as maCode,mm.type_id as maTypeId,
|
||||
mm.buy_task as taskId
|
||||
FROM
|
||||
bm_qrcode_box_bind qb
|
||||
LEFT JOIN ma_machine mm ON qb.ma_id = mm.ma_id
|
||||
LEFT JOIN ma_type mt ON mm.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'
|
||||
where
|
||||
(mm.ma_status = 0 or mm.ma_status =5) and
|
||||
qb.box_id = #{boxId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -260,7 +260,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
FROM
|
||||
bm_qrcode_info
|
||||
WHERE
|
||||
DATE_FORMAT(create_time, '%Y-%m') = #{genMonth} and ma_code is null
|
||||
DATE_FORMAT(create_time, '%Y-%m') = #{genMonth}
|
||||
ORDER BY
|
||||
qr_code DESC
|
||||
</select>
|
||||
|
|
@ -384,6 +384,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
and del_flag = '0'
|
||||
</update>
|
||||
|
||||
<update id="updatePurchaseBindByTaskIdAndTypeId">
|
||||
UPDATE purchase_check_details
|
||||
SET input_num = ifnull(input_num, 0) + ifnull(#{count},0),input_time = now()
|
||||
WHERE task_id = #{taskId} and type_id = #{typeId}
|
||||
</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>
|
||||
|
|
|
|||
|
|
@ -52,6 +52,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
UPDATE ma_machine SET ma_status = 1 WHERE ma_code = #{maCode} and type_id = #{typeId}
|
||||
</update>
|
||||
|
||||
<update id="updatePurchaseBindByTaskIdAndTypeId">
|
||||
UPDATE purchase_check_details SET `status` = #{status} WHERE task_id = #{taskId} and type_id = #{typeId}
|
||||
</update>
|
||||
|
||||
<update id="updatePurchaseBindBy">
|
||||
UPDATE purchase_check_details SET `status` = if(bind_num = input_num, #{status}, `status`) WHERE task_id = #{taskId} and type_id = #{typeId}
|
||||
</update>
|
||||
|
||||
<select id="selectAll" resultType="com.bonus.material.purchase.domain.vo.PurchaseVo">
|
||||
SELECT
|
||||
pci.task_id as taskId,
|
||||
|
|
|
|||
Loading…
Reference in New Issue