入库联调

This commit is contained in:
mashuai 2024-08-23 18:00:31 +08:00
parent 541a825f4f
commit 75741ea007
9 changed files with 178 additions and 61 deletions

View File

@ -1,11 +1,12 @@
package com.bonus.purchase.controller;
import com.bonus.base.api.domain.MaType;
import com.bonus.common.core.domain.ResultBean;
import com.bonus.common.core.utils.poi.ExcelUtil;
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.purchase.domain.PurchaseStorageDto;
import com.bonus.purchase.dto.PurchaseDto;
import com.bonus.purchase.service.BpmPurchaseStorageService;
import com.bonus.purchase.service.impl.BpmPurchaseInfoService;
import com.bonus.purchase.vo.PurchaseVo;
@ -55,24 +56,21 @@ public class BpmPurchaseStorageController extends BaseController {
}
/*
* 入库
* */
/**
* 入库
* @param purchaseDto
* @return
*/
@PostMapping
public int warehouse(PurchaseStorageDto purchaseStorageDto) {
PurchaseStorageDto purchaseStorageDto1 = purchaseStorageService.selectByPrimaryKey(purchaseStorageDto.getId());
MaType maType = purchaseStorageService.selectByTypeId(purchaseStorageDto1.getTypeId());
if (maType.getManageType() == "1"){
int status = purchaseStorageService.updateStorageNum(purchaseStorageDto1.getInputNum(),purchaseStorageDto1.getTypeId());
}else {
int status = purchaseStorageService.insertMaMachine(purchaseStorageDto1);
}
return purchaseStorageService.setStatus(purchaseStorageDto1.getId());
public AjaxResult warehouse(@RequestBody PurchaseDto purchaseDto) {
return purchaseStorageService.warehouse(purchaseDto);
}
/*
* 入库驳回
* */
/**
* 入库驳回
* @param purchaseStorageDto
* @return
*/
@PutMapping(value = "/reject")
public int reject(PurchaseStorageDto purchaseStorageDto) {
return bpmPurchaseInfoService.updateStatusByIdIn(Integer.valueOf(purchaseStorageDto.getStatus()),purchaseStorageDto.getId());

View File

@ -1,8 +1,10 @@
package com.bonus.purchase.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
@ -14,6 +16,8 @@ import java.util.List;
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PurchaseDto {
@ApiModelProperty(value = "id")

View File

@ -48,4 +48,5 @@ public interface BpmPurchaseAcceptMapper {
*/
int updateCheckNum(@Param("id") String id, @Param("purchaseNum") Integer purchaseNum);
int updateNum(@Param("id") String purchaseId, @Param("purchaseNum") Integer bindNum);
}

View File

@ -3,7 +3,9 @@ package com.bonus.purchase.mapper;
import com.bonus.base.api.domain.MaMachine;
import com.bonus.base.api.domain.MaType;
import com.bonus.purchase.domain.PurchaseStorageDto;
import com.bonus.purchase.vo.PurchaseAcceptVo;
import com.bonus.purchase.vo.PurchaseVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -20,10 +22,10 @@ public interface BpmPurchaseStorageMapper {
MaType selectByTypeId(Integer typeId);
int updateStorageNum(Integer inputNum, Integer typeId);
int updateStorageNum(@Param("inputNum") Integer inputNum, @Param("typeId") Integer typeId);
int setStatus(Integer id);
int insertmaMachine(MaMachine maMachine);
int insertmaMachine(PurchaseAcceptVo acceptVo);
}

View File

@ -1,7 +1,8 @@
package com.bonus.purchase.service;
import com.bonus.base.api.domain.MaType;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.purchase.domain.PurchaseStorageDto;
import com.bonus.purchase.dto.PurchaseDto;
import com.bonus.purchase.vo.PurchaseVo;
import java.util.List;
@ -29,14 +30,10 @@ public interface BpmPurchaseStorageService {
PurchaseStorageDto selectByPrimaryKey(Integer id);
int insertWarehouse(PurchaseStorageDto purchaseStorageDto);
MaType selectByTypeId(Integer typeId);
int updateStorageNum(Integer inputNum, Integer typeId);
int setStatus(Integer id);
int insertMaMachine(PurchaseStorageDto purchaseStorageDto1);
/**
* 入库
* @param purchaseDto
* @return
*/
AjaxResult warehouse(PurchaseDto purchaseDto);
}

View File

@ -104,11 +104,20 @@ public class BpmPurchaseAcceptServiceImpl implements BpmPurchaseAcceptService {
PurchaseAcceptVo::getId,
Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList())
));
result = getResult(result, groupedByIdStatus);
if (result > 0) {
return AjaxResult.success("批量验收合格成功");
for (Map.Entry<Integer, List<Integer>> entry : groupedByIdStatus.entrySet()) {
Integer id = entry.getKey();
List<Integer> statusList1 = entry.getValue();
if (statusList1.contains(Constants.PENDING_BINDING)) {
//如果详情状态包含待绑定则外部任务状态为待绑定
result += bpmTaskMapper.updateStatusById(Constants.PENDING_BINDING, id);
} else if (!statusList1.contains(Constants.PENDING_BINDING) && statusList1.contains(Constants.PENDING_INVENTORY)) {
result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id);
}
}
}
if (result > 0) {
return AjaxResult.success("批量验收合格成功");
}
} catch (Exception e) {
throw new RuntimeException(e);
}

View File

@ -1,15 +1,25 @@
package com.bonus.purchase.service.impl;
import com.bonus.base.api.domain.MaMachine;
import com.bonus.base.api.domain.MaType;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.purchase.domain.PurchaseStorageDto;
import com.bonus.purchase.dto.PurchaseDto;
import com.bonus.purchase.mapper.BpmPurchaseAcceptMapper;
import com.bonus.purchase.mapper.BpmPurchaseInfoMapper;
import com.bonus.purchase.mapper.BpmPurchaseStorageMapper;
import com.bonus.purchase.service.BpmPurchaseStorageService;
import com.bonus.purchase.utils.Constants;
import com.bonus.purchase.vo.PurchaseAcceptVo;
import com.bonus.purchase.vo.PurchaseVo;
import com.bonus.task.mapper.BpmTaskMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService {
@ -17,6 +27,15 @@ public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService
@Resource
private BpmPurchaseStorageMapper bpmPurchaseStorageMapper;
@Resource
private BpmTaskMapper bpmTaskMapper;
@Resource
private BpmPurchaseInfoMapper bpmPurchaseInfoMapper;
@Resource
private BpmPurchaseAcceptMapper mapper;
@Override
public List<PurchaseVo> selectAll(PurchaseStorageDto purchaseStorageDto) {
@ -33,34 +52,114 @@ public class BpmPurchaseStorageServiceImpl implements BpmPurchaseStorageService
return bpmPurchaseStorageMapper.selectByPrimaryKey(id);
}
/**
* 入库
* @param purchaseDto
* @return
*/
@Override
public int insertWarehouse(PurchaseStorageDto purchaseStorageDto) {
return bpmPurchaseStorageMapper.insertWarehouse(purchaseStorageDto);
public AjaxResult warehouse(PurchaseDto purchaseDto) {
if (purchaseDto.getId() != null) {
String[] split = purchaseDto.getId().split(",");
List<Integer> taskIdList = new ArrayList<>();
for (int i = 0; i < split.length; i++) {
taskIdList.add(Integer.parseInt(split[i]));
}
System.out.println(taskIdList);
purchaseDto.setTaskIds(taskIdList);
int result = 0;
try {
//根据任务id查询详情表
for (Integer taskId : taskIdList) {
purchaseDto.setId(String.valueOf(taskId));
List<PurchaseAcceptVo> details = mapper.getDetails(purchaseDto);
//根据查询的采购数量更新验收数量
for (PurchaseAcceptVo purchaseVo : details) {
result += mapper.updateNum(purchaseVo.getPurchaseId(), purchaseVo.getBindNum());
result += bpmPurchaseInfoMapper.updateStatusById(Constants.PURCHASE_PASSED, Integer.parseInt(purchaseVo.getPurchaseId()));
if ("0".equals(purchaseVo.getManageType())) {
result += bpmPurchaseStorageMapper.insertmaMachine(purchaseVo);
} else if ("1".equals(purchaseVo.getManageType())) {
result += bpmPurchaseStorageMapper.updateStorageNum(purchaseVo.getBindNum(), purchaseVo.getTypeId());
}
}
// 提取 PurchaseId
List<String> idList = details.stream().map(PurchaseAcceptVo::getPurchaseId).collect(Collectors.toList());
//根据详情id查询详情状态更新任务表状态
List<PurchaseAcceptVo> idStatusList = mapper.select(idList);
// 使用流 API id 分组并提取 status
Map<Integer, List<Integer>> groupedByIdStatus = idStatusList.stream()
.collect(Collectors.groupingBy(
PurchaseAcceptVo::getId,
Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList())
));
for (Map.Entry<Integer, List<Integer>> entry : groupedByIdStatus.entrySet()) {
Integer id = entry.getKey();
List<Integer> statusList1 = entry.getValue();
if (statusList1.contains(Constants.PENDING_INVENTORY)) {
//如果详情状态包含待绑定则外部任务状态为待绑定
result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id);
} else if (!statusList1.contains(Constants.PENDING_INVENTORY) && statusList1.contains(Constants.PURCHASE_PASSED)) {
result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_PASSED, id);
}
}
}
if (result > 0) {
return AjaxResult.success("批量入库成功");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
} else if (purchaseDto.getPurchaseId() != null) {
String[] split = purchaseDto.getPurchaseId().split(",");
purchaseDto.setStatus(Constants.PURCHASE_PASSED);
int result = 0;
try {
//根据采购单id查询详情id
for (int i = 0; i < split.length; i++) {
purchaseDto.setPurchaseId(split[i]);
List<PurchaseAcceptVo> details = mapper.getDetails(purchaseDto);
if (CollectionUtils.isNotEmpty(details)) {
result += bpmPurchaseInfoMapper.updateStatusById(Constants.PURCHASE_PASSED, Integer.parseInt(details.get(0).getPurchaseId()));
if ("0".equals(details.get(0).getManageType())) {
result += bpmPurchaseStorageMapper.insertmaMachine(details.get(0));
} else if ("1".equals(details.get(0).getManageType())) {
result += bpmPurchaseStorageMapper.updateStorageNum(details.get(0).getBindNum(), details.get(0).getTypeId());
}
}
result = mapper.updateNum(details.get(0).getPurchaseId(), details.get(0).getBindNum());
}
//根据详情id查询详情状态更新任务表状态
List<PurchaseAcceptVo> statusList = mapper.select(Arrays.asList(split));
// 使用流 API id 分组并提取 status
Map<Integer, List<Integer>> groupedByIdStatus = statusList.stream()
.collect(Collectors.groupingBy(
PurchaseAcceptVo::getId,
Collectors.mapping(PurchaseAcceptVo::getStatus, Collectors.toList())
));
result = getResult(result, groupedByIdStatus);
if (result > 0) {
return AjaxResult.success("批量入库成功");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return AjaxResult.error("操作失败");
}
@Override
public MaType selectByTypeId(Integer typeId) {
return bpmPurchaseStorageMapper.selectByTypeId(typeId);
}
@Override
public int updateStorageNum(Integer inputNum, Integer typeId) {
return bpmPurchaseStorageMapper.updateStorageNum(inputNum,typeId);
}
@Override
public int setStatus(Integer id) {
return bpmPurchaseStorageMapper.setStatus(id);
}
@Override
public int insertMaMachine(PurchaseStorageDto purchaseStorageDto1) {
MaMachine maMachine = new MaMachine();
maMachine.setTypeId(purchaseStorageDto1.getTypeId());
maMachine.setStatus(String.valueOf(61));
maMachine.setPurchaseId(String.valueOf(purchaseStorageDto1.getId()));
return bpmPurchaseStorageMapper.insertmaMachine(maMachine);
private int getResult(int result, Map<Integer, List<Integer>> groupedByIdStatus) {
for (Map.Entry<Integer, List<Integer>> entry : groupedByIdStatus.entrySet()) {
Integer id = entry.getKey();
List<Integer> statusList1 = entry.getValue();
if (statusList1.contains(Constants.PENDING_INVENTORY)) {
//如果详情状态包含待绑定则外部任务状态为待绑定
result += bpmTaskMapper.updateStatusById(Constants.PENDING_INVENTORY, id);
} else if (!statusList1.contains(Constants.PENDING_INVENTORY) && statusList1.contains(Constants.PURCHASE_PASSED)) {
result += bpmTaskMapper.updateStatusById(Constants.PURCHASE_PASSED, id);
}
}
return result;
}

View File

@ -10,6 +10,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE
bp.id = #{id}
</update>
<update id="updateNum">
UPDATE bpm_purchase_info bp
SET bp.input_num = #{purchaseNum}
WHERE
bp.id = #{id}
</update>
<select id="selectAll" resultType="com.bonus.purchase.vo.PurchaseAcceptVo">
SELECT
@ -65,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bp.notax_price AS notaxPrice,
bp.purchase_num AS purchaseNum,
bp.check_num AS checkNum,
bp.bind_num AS bindNum,
bp.type_id as typeId,
bs.`name` AS supplierName,

View File

@ -19,7 +19,7 @@
</insert>
<update id="updateStorageNum" parameterType="java.lang.Integer">
UPDATE ma_type
SET storage_num = #{inputNum} + storage_num
SET storage_num = #{inputNum} + IFNULL(storage_num, 0)
WHERE
id = #{typeId}
</update>