二维码标准箱--扫码入库机具
This commit is contained in:
parent
fbf72c2f89
commit
5dc324fa62
|
|
@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
@ -19,6 +20,7 @@ import java.util.List;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class PurchaseDto {
|
public class PurchaseDto {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.bonus.common.log.annotation.SysLog;
|
||||||
import com.bonus.common.log.enums.OperaType;
|
import com.bonus.common.log.enums.OperaType;
|
||||||
import com.bonus.common.security.annotation.RequiresPermissions;
|
import com.bonus.common.security.annotation.RequiresPermissions;
|
||||||
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
||||||
|
import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto;
|
||||||
import com.bonus.material.basic.service.BmQrBoxService;
|
import com.bonus.material.basic.service.BmQrBoxService;
|
||||||
import com.bonus.material.common.annotation.PreventRepeatSubmit;
|
import com.bonus.material.common.annotation.PreventRepeatSubmit;
|
||||||
import com.bonus.material.ma.domain.TypeKeeper;
|
import com.bonus.material.ma.domain.TypeKeeper;
|
||||||
|
|
@ -130,6 +131,18 @@ public class BmQrBoxController extends BaseController {
|
||||||
return qrBoxService.getBoxBindListByCode(bmQrBoxInfo);
|
return qrBoxService.getBoxBindListByCode(bmQrBoxInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APP -- 新购入库 -- 确认入库标准箱
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "APP -- 新购入库 -- 确认入库标准箱")
|
||||||
|
@PreventRepeatSubmit
|
||||||
|
//@RequiresPermissions("basic:qrBox:edit")
|
||||||
|
@SysLog(title = "APP-二维码标准箱管理", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->APP扫码创建标准箱")
|
||||||
|
@PostMapping("/app_warehouse")
|
||||||
|
public AjaxResult appWarehouse(@RequestBody @NotNull(message = "参数不能为空") BoxBindWarehouseDto boxBindWarehouseDto) {
|
||||||
|
return qrBoxService.appWarehouse(boxBindWarehouseDto);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APP -- 扫码绑定机具
|
* APP -- 扫码绑定机具
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.bonus.material.basic.domain.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : 阮世耀
|
||||||
|
* @version : 1.0
|
||||||
|
* @PackagePath: com.bonus.material.basic.domain.dto
|
||||||
|
* @CreateTime: 2024-12-20 15:18
|
||||||
|
* @Description: 标准箱绑定DTO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class BoxBindWarehouseDto {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "标准箱ID")
|
||||||
|
private Long boxId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "标准箱编码")
|
||||||
|
private String boxCode;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "任务ID")
|
||||||
|
private Long taskId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "机具ID")
|
||||||
|
private Long maId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "机具编号")
|
||||||
|
private String maCode;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "机具类型ID")
|
||||||
|
private Long maTypeId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "机具状态")
|
||||||
|
private String maStatus;
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package com.bonus.material.basic.service;
|
||||||
|
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
||||||
|
import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -28,6 +29,12 @@ public interface BmQrBoxService {
|
||||||
*/
|
*/
|
||||||
AjaxResult getBoxInfoBindListByCode(BmQrBoxInfo bmQrBoxInfo);
|
AjaxResult getBoxInfoBindListByCode(BmQrBoxInfo bmQrBoxInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APP -- 新购入库扫码 -- 确认入库
|
||||||
|
* @param boxBindWarehouseDto 入库信息
|
||||||
|
*/
|
||||||
|
AjaxResult appWarehouse(BoxBindWarehouseDto boxBindWarehouseDto);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载二维码标准箱
|
* 下载二维码标准箱
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,24 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.bonus.common.biz.config.BackstageApplication;
|
import com.bonus.common.biz.config.BackstageApplication;
|
||||||
import com.bonus.common.biz.config.DateTimeHelper;
|
import com.bonus.common.biz.config.DateTimeHelper;
|
||||||
import com.bonus.common.biz.config.QrCodeUtils;
|
import com.bonus.common.biz.config.QrCodeUtils;
|
||||||
|
import com.bonus.common.biz.domain.purchase.PurchaseDto;
|
||||||
import com.bonus.common.biz.enums.HttpCodeEnum;
|
import com.bonus.common.biz.enums.HttpCodeEnum;
|
||||||
import com.bonus.common.biz.enums.MaMachineStatusEnum;
|
import com.bonus.common.biz.enums.MaMachineStatusEnum;
|
||||||
|
import com.bonus.common.biz.enums.PurchaseTaskStatusEnum;
|
||||||
import com.bonus.common.biz.enums.QrBoxStatusEnum;
|
import com.bonus.common.biz.enums.QrBoxStatusEnum;
|
||||||
import com.bonus.common.core.utils.DateUtils;
|
import com.bonus.common.core.utils.DateUtils;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import com.bonus.common.security.utils.SecurityUtils;
|
import com.bonus.common.security.utils.SecurityUtils;
|
||||||
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
import com.bonus.material.basic.domain.BmQrBoxInfo;
|
||||||
|
import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto;
|
||||||
import com.bonus.material.basic.domain.vo.BoxInfoBindVo;
|
import com.bonus.material.basic.domain.vo.BoxInfoBindVo;
|
||||||
import com.bonus.material.basic.mapper.BmQrBoxMapper;
|
import com.bonus.material.basic.mapper.BmQrBoxMapper;
|
||||||
import com.bonus.material.basic.service.BmQrBoxService;
|
import com.bonus.material.basic.service.BmQrBoxService;
|
||||||
import com.bonus.material.ma.domain.vo.MachineVo;
|
import com.bonus.material.ma.domain.vo.MachineVo;
|
||||||
import com.bonus.material.ma.mapper.MachineMapper;
|
import com.bonus.material.ma.mapper.MachineMapper;
|
||||||
|
import com.bonus.material.purchase.domain.vo.PurchaseVo;
|
||||||
|
import com.bonus.material.purchase.mapper.PurchaseBindMapper;
|
||||||
|
import com.bonus.material.purchase.mapper.PurchaseStorageMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
@ -25,6 +31,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -41,6 +48,12 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
|
||||||
@Resource
|
@Resource
|
||||||
private MachineMapper machineMapper;
|
private MachineMapper machineMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PurchaseBindMapper purchaseBindMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PurchaseStorageMapper purchaseStorageMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询二维码标准箱管理列表
|
* 查询二维码标准箱管理列表
|
||||||
*/
|
*/
|
||||||
|
|
@ -96,13 +109,73 @@ public class BmQrBoxServiceImpl implements BmQrBoxService {
|
||||||
boxBindList.removeIf(Objects::isNull);
|
boxBindList.removeIf(Objects::isNull);
|
||||||
boxInfoBindVo.setBindMaTotal(boxBindList.size());
|
boxInfoBindVo.setBindMaTotal(boxBindList.size());
|
||||||
boxBindList.removeIf(item -> item.getMaStatus() == null);
|
boxBindList.removeIf(item -> item.getMaStatus() == null);
|
||||||
boxBindList.removeIf(item -> !item.getMaStatus().equals(MaMachineStatusEnum.IN_STORE.getStatus().toString()) &&
|
boxBindList.removeIf(item -> !item.getMaStatus().equals(MaMachineStatusEnum.NEW_PURCHASE.getStatus().toString()));
|
||||||
!item.getMaStatus().equals(MaMachineStatusEnum.NEW_PURCHASE.getStatus().toString()));
|
if (Objects.nonNull(bmQrBoxInfo.getMaTypeId())) {
|
||||||
boxBindList.removeIf(item -> item.getMaTypeId() == null || !Objects.equals(item.getMaTypeId(), bmQrBoxInfo.getMaTypeId()));
|
boxBindList.removeIf(item -> item.getMaTypeId() == null || !Objects.equals(item.getMaTypeId(), bmQrBoxInfo.getMaTypeId()));
|
||||||
|
}
|
||||||
boxInfoBindVo.setSuccessMaTotal(boxBindList.size());
|
boxInfoBindVo.setSuccessMaTotal(boxBindList.size());
|
||||||
return AjaxResult.success(boxInfoBindVo);
|
return AjaxResult.success(boxInfoBindVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APP -- 新购入库扫码 -- 确认入库
|
||||||
|
*
|
||||||
|
* @param boxBindWarehouseDto 入库信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public AjaxResult appWarehouse(BoxBindWarehouseDto boxBindWarehouseDto) {
|
||||||
|
// -------------- 标准箱状态校验 -------------------------
|
||||||
|
if (boxBindWarehouseDto.getBoxCode() == null) {
|
||||||
|
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "请输入标准箱编码");
|
||||||
|
}
|
||||||
|
if (boxBindWarehouseDto.getTaskId() == null || boxBindWarehouseDto.getMaTypeId() == null) {
|
||||||
|
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "请输入任务ID和入库的物资类型ID");
|
||||||
|
}
|
||||||
|
List<BmQrBoxInfo> boxInfos = bmQrBoxMapper.findBoxInfoByKey(new BmQrBoxInfo().setBoxCode(boxBindWarehouseDto.getBoxCode()));
|
||||||
|
boxInfos.removeIf(Objects::isNull);
|
||||||
|
if (boxInfos.isEmpty()) {
|
||||||
|
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "标准箱编码不存在");
|
||||||
|
} else if (boxInfos.size() == 1) {
|
||||||
|
if (boxInfos.get(0).getBoxId() == null || boxInfos.get(0).getBoxCode() == null) {
|
||||||
|
boxBindWarehouseDto.setBoxId(boxInfos.get(0).getBoxId());
|
||||||
|
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "标准箱信息异常,请联系运维人员处理");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return AjaxResult.warn("该二维码已绑定多个标准箱,请联系运维人员处理");
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------- 标准箱绑定的机具明细校验 -------------------------
|
||||||
|
List<BmQrBoxInfo> boxBindList = bmQrBoxMapper.getBoxBindList(boxBindWarehouseDto.getBoxId());
|
||||||
|
boxBindList.removeIf(Objects::isNull);
|
||||||
|
boxBindList.removeIf(item -> item.getMaStatus() == null);
|
||||||
|
boxBindList.removeIf(item -> !item.getMaStatus().equals(MaMachineStatusEnum.NEW_PURCHASE.getStatus().toString()));
|
||||||
|
boxBindList.removeIf(item -> item.getMaTypeId() == null || !Objects.equals(item.getMaTypeId(), boxBindWarehouseDto.getMaTypeId()));
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------- 进行入库操作 -------------------------------
|
||||||
|
Long purchaseDetailId = purchaseStorageMapper.selectIdByTaskId(boxBindWarehouseDto.getTaskId(), boxBindWarehouseDto.getMaTypeId());
|
||||||
|
if (purchaseDetailId == null || purchaseDetailId == 0) {
|
||||||
|
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "新购任务不存在此物资类型,请确认录入是否正确");
|
||||||
|
}
|
||||||
|
// 更新入库数量
|
||||||
|
purchaseStorageMapper.updateNum(String.valueOf(purchaseDetailId), BigDecimal.valueOf(boxBindList.size()));
|
||||||
|
// 更新物资类型库存数量
|
||||||
|
purchaseStorageMapper.updateStorageNum(BigDecimal.valueOf(boxBindList.size()), Math.toIntExact(boxBindWarehouseDto.getMaTypeId()));
|
||||||
|
// 更新物资设备状态
|
||||||
|
boxBindList.forEach(item -> {
|
||||||
|
item.setMaStatus(MaMachineStatusEnum.IN_STORE.getStatus().toString());
|
||||||
|
purchaseStorageMapper.updateMachineByCode(new PurchaseDto()
|
||||||
|
.setMaCode(item.getMaCode())
|
||||||
|
.setTypeId(Math.toIntExact(boxBindWarehouseDto.getMaTypeId()))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
// 更新新购验收明细状态
|
||||||
|
purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.IN_STORE.getStatus(), Math.toIntExact(purchaseDetailId));
|
||||||
|
|
||||||
|
// ---------------- 返回前端 -------------------------------------
|
||||||
|
return AjaxResult.success("入库成功");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载二维码标准箱
|
* 下载二维码标准箱
|
||||||
* @param response 响应对象
|
* @param response 响应对象
|
||||||
|
|
|
||||||
|
|
@ -72,4 +72,6 @@ public interface PurchaseStorageMapper {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int updateMachineByCode(PurchaseDto dto);
|
int updateMachineByCode(PurchaseDto dto);
|
||||||
|
|
||||||
|
Long selectIdByTaskId(@Param("taskId") Long taskId, @Param("typeId") Long typeId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,4 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where pcd.task_id = #{taskId}
|
where pcd.task_id = #{taskId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectIdByTaskId" resultType="java.lang.Long">
|
||||||
|
SELECT id FROM purchase_check_details WHERE task_id = #{taskId} and type_id = #{typeId} limit 1
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue