新购实现拆分多次入库,状态流转优化

This commit is contained in:
syruan 2025-01-10 17:47:41 +08:00
parent 12bb2ed637
commit 4e3edf2cb2
6 changed files with 31 additions and 160 deletions

View File

@ -36,13 +36,14 @@ public enum PurchaseTaskStatusEnum {
// 判断任务状态是否为此阶段所属状态 // 判断任务状态是否为此阶段所属状态
public static boolean isStatusOfStage(Integer status, PurchaseTaskStageEnum stageEnum, Integer manageType) { public static boolean isStatusOfStage(Integer status, PurchaseTaskStageEnum stageEnum, Integer manageType) {
if (status == null || stageEnum == null || manageType == null) { if (null == status || null == stageEnum || null == manageType) {
return true; return true;
} }
// 查询出数据是所属哪个状态
PurchaseTaskStatusEnum findEnum = PurchaseTaskStatusEnum.getByStatus(status); PurchaseTaskStatusEnum findEnum = PurchaseTaskStatusEnum.getByStatus(status);
if (findEnum == null) { if (null == findEnum) {
return true; return true;
} }
@ -52,12 +53,17 @@ public enum PurchaseTaskStatusEnum {
} }
// 如果是验收阶段, 并且是数量管理的物资那么入库被驳回的也要判断为未完成因为计数管理不需要绑定直接从验收到入库 // 如果是验收阶段, 并且是数量管理的物资那么入库被驳回的也要判断为未完成因为计数管理不需要绑定直接从验收到入库
if (stageEnum == PurchaseTaskStageEnum.CHECK) { if (PurchaseTaskStageEnum.CHECK == stageEnum) {
if (Objects.equals(findEnum, PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT) && Objects.equals(manageType, 1)) { if (PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT == findEnum && Objects.equals(manageType, 1)) {
return true; return true;
} }
} }
// 如果查询的是入库阶段数据是待绑定那么直接返回true未完成
if (PurchaseTaskStageEnum.STORE == stageEnum && (TO_BIND == findEnum || TO_STORE_AFTER_REJECT == findEnum)) {
return true;
}
return findEnum.getStage().equals(stageEnum.getCode()); return findEnum.getStage().equals(stageEnum.getCode());
} }

View File

@ -1,138 +0,0 @@
//package com.bonus.material.purchase.controller;
//
//import java.util.List;
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletResponse;
//import javax.validation.Valid;
//import javax.validation.constraints.NotNull;
//
//import com.bonus.common.log.enums.OperaType;
//import com.bonus.material.common.annotation.PreventRepeatSubmit;
//import com.bonus.material.purchase.domain.dto.PurchaseCheckFileDto;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.web.bind.annotation.*;
//import com.bonus.common.log.annotation.SysLog;
//import com.bonus.common.security.annotation.RequiresPermissions;
//import com.bonus.material.purchase.domain.PurchaseCheckDetails;
//import com.bonus.material.purchase.service.IPurchaseCheckDetailsService;
//import com.bonus.common.core.web.controller.BaseController;
//import com.bonus.common.core.web.domain.AjaxResult;
//import com.bonus.common.core.utils.poi.ExcelUtil;
//import com.bonus.common.core.web.page.TableDataInfo;
//
///**
// * 新购验收任务详细Controller
// * @author syruan
// */
//@Api(tags = "新购验收任务详细接口")
//@RestController
//@RequestMapping("/purchase_check_details")
//public class PurchaseCheckDetailsController extends BaseController {
//
// @Resource
// private IPurchaseCheckDetailsService purchaseCheckDetailsService;
//
// /**
// * 查询新购验收任务详细列表
// */
// @ApiOperation(value = "查询新购验收任务详细列表")
// @RequiresPermissions("purchase:details:list")
// @GetMapping("/list")
// public TableDataInfo list(PurchaseCheckDetails purchaseCheckDetails) {
// startPage();
// List<PurchaseCheckDetails> list = purchaseCheckDetailsService.selectPurchaseCheckDetailsList(purchaseCheckDetails);
// return getDataTable(list);
// }
//
// /**
// * 导出新购验收任务详细列表
// */
// @ApiOperation(value = "导出新购验收任务详细列表")
// @PreventRepeatSubmit
// @RequiresPermissions("purchase:details:export")
// @SysLog(title = "新购验收任务详细", businessType = OperaType.EXPORT, logType = 1,module = "物资新购->导出新购验收任务详细")
// @PostMapping("/export")
// public void export(HttpServletResponse response, PurchaseCheckDetails purchaseCheckDetails) {
// List<PurchaseCheckDetails> list = purchaseCheckDetailsService.selectPurchaseCheckDetailsList(purchaseCheckDetails);
// ExcelUtil<PurchaseCheckDetails> util = new ExcelUtil<PurchaseCheckDetails>(PurchaseCheckDetails.class);
// util.exportExcel(response, list, "新购验收任务详细数据");
// }
//
// /**
// * 获取新购验收任务详细详细信息
// */
// @ApiOperation(value = "获取新购验收任务详细详细信息")
// @RequiresPermissions("purchase:details:query")
// @GetMapping(value = "/{id}")
// public AjaxResult getInfo(@PathVariable("id") Long id) {
// return success(purchaseCheckDetailsService.selectPurchaseCheckDetailsById(id));
// }
//
// /**
// * 新增新购验收任务详细
// */
// @ApiOperation(value = "新增新购验收任务详细")
// @PreventRepeatSubmit
// @RequiresPermissions("purchase:details:add")
// @SysLog(title = "新购验收任务详细", businessType = OperaType.INSERT, logType = 1,module = "物资新购->新增新购验收任务详细")
// @PostMapping
// public AjaxResult add(@RequestBody PurchaseCheckDetails purchaseCheckDetails) {
// try {
// return toAjax(purchaseCheckDetailsService.insertPurchaseCheckDetails(purchaseCheckDetails));
// } catch (Exception e) {
// return error("系统错误, " + e.getMessage());
// }
// }
//
// /**
// * 修改新购验收任务详细
// */
// @ApiOperation(value = "修改新购验收任务详细")
// @PreventRepeatSubmit
// @RequiresPermissions("purchase:details:edit")
// @SysLog(title = "新购验收任务详细", businessType = OperaType.UPDATE, module = "物资新购->修改新购验收任务详细")
// @PutMapping
// public AjaxResult edit(@RequestBody PurchaseCheckDetails purchaseCheckDetails) {
// try {
// return toAjax(purchaseCheckDetailsService.updatePurchaseCheckDetails(purchaseCheckDetails));
// } catch (Exception e) {
// return error("系统错误, " + e.getMessage());
// }
// }
//
// /**
// * 删除新购验收任务详细
// */
// @ApiOperation(value = "删除新购验收任务详细")
// @PreventRepeatSubmit
// @RequiresPermissions("purchase:details:remove")
// @SysLog(title = "新购验收任务详细", businessType = OperaType.DELETE, logType = 1,module = "物资新购->删除新购验收任务详细")
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids) {
// return toAjax(purchaseCheckDetailsService.deletePurchaseCheckDetailsByIds(ids));
// }
//
// /**
// * 根据任务id查询报告附件
// */
// @ApiOperation(value = "根据任务id查询报告附件")
// @RequiresPermissions("purchase:details:query")
// @GetMapping("/fileList")
// @SysLog(title = "新购验收任务明细报告查询", businessType = OperaType.QUERY, module = "物资新购->根据任务id查询物资报告附件")
// public AjaxResult getFileList(PurchaseCheckFileDto purchaseCheckFileDto) {
// return success(purchaseCheckDetailsService.selectPurchaseCheckFileListByTaskType(purchaseCheckFileDto.getTaskType(), purchaseCheckFileDto.getTypeId()));
// }
//
//
// @ApiOperation(value = "上传报告附件")
// @PreventRepeatSubmit
// @RequiresPermissions("purchase:details:add")
// @SysLog(title = "上传报告附件", businessType = OperaType.INSERT, logType = 1,module = "物资新购->上传物资报告附件")
// @PostMapping("/uploadFile")
// public AjaxResult uploadFile(@RequestBody @NotNull @Valid PurchaseCheckFileDto purchaseCheckFileDto) {
// return purchaseCheckDetailsService.insertPurchaseCheckFile(purchaseCheckFileDto);
// }
//
//
//}

View File

@ -109,8 +109,12 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
).collect(Collectors.toList()); ).collect(Collectors.toList());
break; break;
case PURCHASE_TASK_STAGE_STORE: case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o -> PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) || purchaseCheckDetailsList = purchaseCheckDetailsList.stream().filter(o ->
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) ||
(PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ||
(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO))
).collect(Collectors.toList()); ).collect(Collectors.toList());
break; break;
default: default:
@ -128,7 +132,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
/** /**
* 查询是否存在附件给前端用于文件颜色判断 * 查询是否存在附件给前端用于文件颜色判断
* @param purchaseCheckDetailsList * @param purchaseCheckDetailsList 新购验收明细列表
*/ */
private void extractedExitFile(List<PurchaseCheckDetails> purchaseCheckDetailsList) { private void extractedExitFile(List<PurchaseCheckDetails> purchaseCheckDetailsList) {
if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) { if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) {
@ -219,8 +223,12 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
).collect(Collectors.toList()); ).collect(Collectors.toList());
break; break;
case PURCHASE_TASK_STAGE_STORE: case PURCHASE_TASK_STAGE_STORE:
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) || purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) ||
PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) ||
(PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ||
(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO))
).collect(Collectors.toList()); ).collect(Collectors.toList());
break; break;
default: default:

View File

@ -223,17 +223,18 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService {
if (CollectionUtils.isNotEmpty(purchaseVoList)) { if (CollectionUtils.isNotEmpty(purchaseVoList)) {
for (PurchaseVo purchaseVo : purchaseVoList) { for (PurchaseVo purchaseVo : purchaseVoList) {
if (purchaseVo.getMaCode().equals(dto.getMaCode())) { if (purchaseVo.getMaCode().equals(dto.getMaCode())) {
dto.setOutFacCode(purchaseVo.getOutFacCode() == null ? "" : purchaseVo.getOutFacCode()); dto.setOutFacCode(null == purchaseVo.getOutFacCode() ? "" : purchaseVo.getOutFacCode());
dto.setProductDate(purchaseVo.getProductDate() == null ? null : purchaseVo.getProductDate()); dto.setProductDate(null == purchaseVo.getProductDate() ? null : purchaseVo.getProductDate());
} }
} }
} }
dto.setTypeId(purchaseDto.getTypeId()); dto.setTypeId(purchaseDto.getTypeId());
if (purchaseStorageMapper.updateMachineByCode(dto) < 1) {throw new RuntimeException("入库失败,更新物资入库状态0条");} if (1 > purchaseStorageMapper.updateMachineByCode(dto)) {throw new RuntimeException("入库失败,更新物资入库状态0条");}
if (purchaseStorageMapper.updateStorageNum(BigDecimal.ONE, dto.getTypeId()) < 1) {throw new RuntimeException("入库失败,库存增加0");} if (1 > purchaseStorageMapper.updateStorageNum(BigDecimal.ONE, dto.getTypeId())) {throw new RuntimeException("入库失败,库存增加0");}
List<PurchaseCheckDetails> bindMaList = purchaseBindMapper.getMachineById(purchaseDto); List<PurchaseCheckDetails> bindMaList = purchaseBindMapper.getMachineById(purchaseDto);
if (CollectionUtils.isNotEmpty(bindMaList)) { if (CollectionUtils.isNotEmpty(bindMaList)) {
result += purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.TO_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); // 还有已绑定的设备 那就不动状态了,这块由设备绑定阶段来决定是否修改成待入库状态 by阮 2025-01-10号修改逻辑
// result += purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.TO_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId()));
} else { } else {
result += purchaseStorageMapper.updateInputStatusById(PurchaseTaskStatusEnum.IN_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); result += purchaseStorageMapper.updateInputStatusById(PurchaseTaskStatusEnum.IN_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId()));
} }
@ -242,7 +243,7 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService {
List<PurchaseVo> statusList = purchaseStorageMapper.select(purchaseDto.getTaskId()); List<PurchaseVo> statusList = purchaseStorageMapper.select(purchaseDto.getTaskId());
result += updateTaskStatus(statusList); result += updateTaskStatus(statusList);
purchaseDto.setPostStoreNum(getStorageNum(purchaseDto)); purchaseDto.setPostStoreNum(getStorageNum(purchaseDto));
if (result > 0) { if (0 < result) {
return AjaxResult.success("入库成功"); return AjaxResult.success("入库成功");
} }
} catch (Exception e) { } catch (Exception e) {

View File

@ -120,12 +120,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productionTime != null"> <if test="productionTime != null">
and pcd.production_time between #{startTime} and #{endTime} and pcd.production_time between #{startTime} and #{endTime}
</if> </if>
<!-- <if test="statusList != null and statusList.size() > 0">-->
<!-- and pcd.status in-->
<!-- <foreach item="item" collection="statusList" open="(" separator="," close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<if test="keyWord != null and keyWord != ''"> <if test="keyWord != null and keyWord != ''">
and (mt.type_name like concat('%', #{keyWord}, '%') and (mt.type_name like concat('%', #{keyWord}, '%')
or mt.unit_name like concat('%', #{keyWord}, '%') or mt.unit_name like concat('%', #{keyWord}, '%')

View File

@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<update id="updateInputStatusById"> <update id="updateInputStatusById">
UPDATE purchase_check_details SET `status` = if(bind_num = input_num, #{updatedStatus}, `status`) WHERE id = #{id} UPDATE purchase_check_details SET `status` = if(check_num = input_num, #{updatedStatus}, `status`) WHERE id = #{id}
</update> </update>
<update id="updateStorageNum"> <update id="updateStorageNum">