入库联调
This commit is contained in:
parent
541a825f4f
commit
75741ea007
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue