diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java new file mode 100644 index 00000000..b12cc378 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java @@ -0,0 +1,79 @@ +package com.bonus.material.purchase.controller; + +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.security.annotation.PreventRepeatSubmit; +import com.bonus.common.security.annotation.RequiresPermissions; +import com.bonus.material.purchase.dto.PurchaseDto; +import com.bonus.material.purchase.service.IPurchaseBindService; +import com.bonus.material.purchase.vo.PurchaseVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 新购验收绑定接口 + * @Author ma_sh + * @create 2024/10/21 18:41 + */ +@Api(tags = "新购验收绑定接口") +@RestController +@RequestMapping("/purchase/bind") +public class PurchaseBindController extends BaseController { + + @Resource + private IPurchaseBindService purchaseBindService; + + /** + * 一级分页查询 + */ + @ApiOperation(value = "查询新购验收绑定详细列表") + @RequiresPermissions("purchase:bind:list") + @GetMapping(value = "/list") + public TableDataInfo getList(PurchaseDto dto) { + startPage(); + List list = purchaseBindService.selectAll(dto); + return getDataTable(list); + } + + /** + * 获取新购绑定二级明细列表 + * @param + * @return + */ + @ApiOperation(value = "获取新购绑定二级明细列表") + @RequiresPermissions("purchase:bind:details") + @GetMapping("/details") + public TableDataInfo getDetails(PurchaseDto dto) { + startPage(); + List list = purchaseBindService.getDetails(dto); + return getDataTable(list); + } + + /** + * 绑定 + * @param dto + * @return + */ + @ApiOperation(value = "编码绑定") + @PreventRepeatSubmit + @RequiresPermissions("purchase:bind:add") + @PostMapping("/bind") + public AjaxResult bind(@RequestBody PurchaseDto dto) { + return purchaseBindService.bind(dto); + } + + /** + * 获取新购验收绑定详细信息 + */ + @ApiOperation(value = "获取新购验收绑定详细信息") + @RequiresPermissions("purchase:bind:query") + @GetMapping(value = "/getById") + public AjaxResult getInfo(PurchaseDto dto) { + return AjaxResult.success(purchaseBindService.selectPurchaseCheckInfoById(dto)); + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java index a0c36bd4..c7328e57 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/dto/PurchaseDto.java @@ -1,5 +1,6 @@ package com.bonus.material.purchase.dto; +import com.bonus.common.core.web.domain.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,10 +11,10 @@ import java.util.List; * @create 2024/10/21 13:58 */ @Data -public class PurchaseDto { +public class PurchaseDto extends BaseEntity { @ApiModelProperty(value = "id") - private String id; + private String taskId; @ApiModelProperty(value = "类型id") private Integer typeId; @@ -44,4 +45,22 @@ public class PurchaseDto { @ApiModelProperty(value = "id列表") private List taskIds; + + @ApiModelProperty(value = "机具编号") + private String maCode; + + @ApiModelProperty(value = "出厂编号") + private String outFacCode; + + @ApiModelProperty(value = "二维码") + private String qrCode; + + @ApiModelProperty(value = "二维码路径") + private String qrUrl; + + @ApiModelProperty(value = "是否下载二维码 (0 否,1 是)") + private String isDownload; + + @ApiModelProperty(value = "提交绑定数据集合") + private List dtoList; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java new file mode 100644 index 00000000..036cc052 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseBindMapper.java @@ -0,0 +1,48 @@ +package com.bonus.material.purchase.mapper; + +import com.bonus.material.purchase.dto.PurchaseDto; +import com.bonus.material.purchase.vo.PurchaseVo; + +import java.util.List; + +/** + * @Author ma_sh + * @create 2024/10/21 18:43 + */ +public interface PurchaseBindMapper { + + /** + * 查询所有 + * @param dto + * @return + */ + List selectAll(PurchaseDto dto); + + /** + * 查询绑定信息 + * @param dto + * @return + */ + List selectPurchaseCheckInfoById(PurchaseDto dto); + + /** + * 获取绑定信息 + * @param dto + * @return + */ + List getDetails(PurchaseDto dto); + + /** + * 根据编码查询 + * @param purchaseDto + * @return + */ + List selectByCode(PurchaseDto purchaseDto); + + /** + * 新增绑定信息 + * @param purchaseDto + * @return + */ + int add(PurchaseDto purchaseDto); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java new file mode 100644 index 00000000..f77758d1 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/IPurchaseBindService.java @@ -0,0 +1,42 @@ +package com.bonus.material.purchase.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.material.purchase.dto.PurchaseDto; +import com.bonus.material.purchase.vo.PurchaseVo; + +import java.util.List; + +/** + * @Author ma_sh + * @create 2024/10/21 18:42 + */ +public interface IPurchaseBindService { + + /** + * 查询所有 + * @param dto + * @return + */ + List selectAll(PurchaseDto dto); + + /** + * 根据id查询采购绑定信息 + * @param dto + * @return + */ + List selectPurchaseCheckInfoById(PurchaseDto dto); + + /** + * 获取新购绑定二级明细列表 + * @param dto + * @return + */ + List getDetails(PurchaseDto dto); + + /** + * 绑定 + * @param dto + * @return + */ + AjaxResult bind(PurchaseDto dto); +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java new file mode 100644 index 00000000..8658f7ab --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java @@ -0,0 +1,110 @@ +package com.bonus.material.purchase.service.impl; + +import com.bonus.common.biz.constant.MaterialConstants; +import com.bonus.common.biz.enums.HttpCodeEnum; +import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.purchase.dto.PurchaseDto; +import com.bonus.material.purchase.mapper.PurchaseBindMapper; +import com.bonus.material.purchase.service.IPurchaseBindService; +import com.bonus.material.purchase.vo.PurchaseVo; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Iterator; +import java.util.List; + +/** + * @Author ma_sh + * @create 2024/10/21 18:42 + */ +@Service +public class PurchaseBindServiceImpl implements IPurchaseBindService { + + @Resource + private PurchaseBindMapper purchaseBindMapper; + + /** + * 查询所有绑定信息 + * @param dto + * @return + */ + @Override + public List selectAll(PurchaseDto dto) { + List list = purchaseBindMapper.selectAll(dto); + if (CollectionUtils.isNotEmpty(list)) { + Iterator iterator = list.iterator(); + while (iterator.hasNext()) { + PurchaseVo purchaseVo = iterator.next(); + String[] split = purchaseVo.getManageType().split(","); + // 检查是否全部为 1 + boolean allOnes = true; + for (String manageType : split) { + if (!MaterialConstants.ONE_CONSTANT.equals(manageType.trim())) { + allOnes = false; + // 发现不是 1,跳出循环 + break; + } + } + // 如果全部为 1,移除该记录 + if (allOnes) { + iterator.remove(); + } + } + } + return list; + } + + /** + * 查询绑定信息 + * @param dto + * @return + */ + @Override + public List selectPurchaseCheckInfoById(PurchaseDto dto) { + return purchaseBindMapper.selectPurchaseCheckInfoById(dto); + } + + /** + * 获取新购绑定二级明细列表 + * @param dto + * @return + */ + @Override + public List getDetails(PurchaseDto dto) { + return purchaseBindMapper.getDetails(dto); + } + + /** + * 绑定 + * @param dto + * @return + */ + @Override + public AjaxResult bind(PurchaseDto dto) { + //先查询提交的编码中是否存在重复提交 + long distinctCodes = dto.getDtoList().stream().map(PurchaseDto::getMaCode).distinct().count(); + if (distinctCodes < dto.getDtoList().size()) { + return AjaxResult.error(1113,"提交的数据中设备编码存在重复,请勿重复添加"); + } + for (PurchaseDto purchaseDto : dto.getDtoList()) { + //根据设备编码唯一校验 + List tbBdDeviceRecord = purchaseBindMapper.selectByCode(purchaseDto); + if (CollectionUtils.isNotEmpty(tbBdDeviceRecord)) { + return AjaxResult.error(1114,"设备编码与库中重复,请勿重复添加"); + } + } + int result = 0; + for (PurchaseDto purchaseDto : dto.getDtoList()) { + purchaseDto.setCreateBy(SecurityUtils.getUserId().toString()); + purchaseDto.setCreateTime(DateUtils.getNowDate()); + result += purchaseBindMapper.add(purchaseDto); + } + if (result > 0) { + return AjaxResult.success("绑定成功"); + } + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/IPurchaseStorageServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java similarity index 99% rename from bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/IPurchaseStorageServiceImpl.java rename to bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java index dc883ee0..895028d3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/IPurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -27,7 +27,7 @@ import static com.bonus.common.biz.constant.MaterialConstants.ZERO_CONSTANT; * @create 2024/10/21 13:53 */ @Service -public class IPurchaseStorageServiceImpl implements IPurchaseStorageService { +public class PurchaseStorageServiceImpl implements IPurchaseStorageService { @Resource private PurchaseStorageMapper purchaseStorageMapper; @@ -149,7 +149,9 @@ public class IPurchaseStorageServiceImpl implements IPurchaseStorageService { dto.setId(String.valueOf(taskId)); List details; details = purchaseStorageMapper.getDetails(dto); - result += updateDetailsAndStatus(details); + for (PurchaseVo purchaseVo : details) { + result += purchaseStorageMapper.updateStatusById(MaterialConstants.PURCHASE_STORAGE_NO_PASSED, Integer.parseInt(purchaseVo.getPurchaseId())); + } details = purchaseStorageMapper.getDetails(dto); result += updateTaskStatus(details); } @@ -215,9 +217,7 @@ public class IPurchaseStorageServiceImpl implements IPurchaseStorageService { dto.setId(String.valueOf(taskId)); List details; details = purchaseStorageMapper.getDetails(dto); - for (PurchaseVo purchaseVo : details) { - result += purchaseStorageMapper.updateStatusById(MaterialConstants.PURCHASE_STORAGE_NO_PASSED, Integer.parseInt(purchaseVo.getPurchaseId())); - } + result += updateDetailsAndStatus(details); details = purchaseStorageMapper.getDetails(dto); result += updateTaskStatus(details); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java index c7eb4d19..99d1e42d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/vo/PurchaseVo.java @@ -15,7 +15,7 @@ import java.util.Date; public class PurchaseVo { @ApiModelProperty(value="任务id") - private Integer id; + private Integer taskId; @ApiModelProperty(value = "二级明细id") private String purchaseId; @@ -95,4 +95,13 @@ public class PurchaseVo { @ApiModelProperty(value = "采购人") private String purchaserName; + + @ApiModelProperty(value = "机具编号") + private String maCode; + + @ApiModelProperty(value = "出厂编号") + private String outFacCode; + + @ApiModelProperty(value = "二维码") + private String qrCode; } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml new file mode 100644 index 00000000..490968c2 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseBindMapper.xml @@ -0,0 +1,193 @@ + + + + + + + + + + insert into purchase_macode_info + + task_id, + type_id, + ma_code, + qr_code, + fix_code, + code_type, + status, + create_by, + create_time, + remark, + company_id, + out_fac_code, + qr_url, + del_flag + + + #{taskId}, + #{typeId}, + #{maCode}, + #{qrCode}, + #{fixCode}, + #{codeType}, + #{status}, + #{createBy}, + #{createTime}, + #{remark}, + #{companyId}, + #{outFacCode}, + #{qrUrl}, + 0 + + + + + UPDATE purchase_check_details + SET input_num = #{purchaseNum} + WHERE + id = #{id} + + + + UPDATE purchase_check_details + SET `status` = #{updatedStatus} + WHERE + id = #{id} + + + + UPDATE ma_type + SET storage_num = #{inputNum} + IFNULL(storage_num, 0) + WHERE + type_id = #{typeId} + + + + + + + + + + + + + \ No newline at end of file diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml index da1a6f11..25cb8f52 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml @@ -10,7 +10,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" UPDATE purchase_check_details - SET input_num = #{purchaseNum} + SET input_num = #{purchaseNum}, + input_time = now() WHERE id = #{id} @@ -31,11 +32,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT - pci.task_id as id, + pci.task_id as taskId, mt1.type_name AS materialName, mt.type_name AS materialModel, pcd.check_num AS purchaseNum, @@ -91,8 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"