package com.consum.base.service; import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; import com.consum.base.pojo.LWhFormScrappedGoodsParams; import com.consum.base.pojo.LWhFormScrappedParam; import com.consum.base.pojo.LWhProcureModelParams; import com.consum.base.util.IdUtil; import com.consum.model.po.*; import com.iplatform.model.po.S_user_core; import com.walker.jdbc.service.BaseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; import java.util.List; /** * @Description 报废单 * @Author 卢庆阳 * @Date 2023/11/1 */ @Service public class LWhFormScrappedServiceImpl extends BaseServiceImpl { @Autowired private CodeGeneratorService codeGeneratorService; @Autowired private BaseWarehouseServiceImpl baseWarehouseService; @Autowired private FinSysTenantDepartmentServiceImpl departmentService; @Autowired private LWhGoodsService lWhGoodsService; @Autowired private LWhFormScrappedGoodsService scrappedGoodsService; /** * 新增 * @param param * @param sysInfo * @param operatorUser * @return */ //1.新增报废单 //2.新增报废单物品 public int add(LWhFormScrappedParam param, FinSysTenantUser sysInfo, S_user_core operatorUser) { //1.新增报废单记录 LWhFormScrapped lWhFormScrapped = new LWhFormScrapped(); //调拨单id long lWhFormTransferId = IdUtil.generateId(); lWhFormScrapped.setId(lWhFormTransferId); lWhFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped)); lWhFormScrapped.setWarehouseType(0); Long warehouseId = param.getWarehouseId(); lWhFormScrapped.setWarehouseId(warehouseId); //根据仓库id查询仓库 BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId); if (warehouse == null) { log.error("仓库不存在"); return 0; } lWhFormScrapped.setWarehouseName(warehouse.getWarehouseName()); lWhFormScrapped.setAgencyId(Long.valueOf(sysInfo.getTenantId())); lWhFormScrapped.setAgencyName(sysInfo.getTenantName()); lWhFormScrapped.setOperatorId(sysInfo.getSysUserId()); lWhFormScrapped.setOperatorName(sysInfo.getUserName()); lWhFormScrapped.setDealTime(param.getDealTime()); lWhFormScrapped.setStates(0); //根据部门id查询部门 FinSysTenantDepartment department = this.departmentService.getById(sysInfo.getSysDeptId()); if (department != null) { lWhFormScrapped.setDepartmentId(sysInfo.getSysDeptId()); lWhFormScrapped.setDepartmentName(department.getName()); } int flag1 = this.insert(lWhFormScrapped); if (flag1 == 0) { log.error("新增报废单失败"); return 0; } //2.新增报废单物品记录 List scrappedGoodsParamList = param.getScrappedGoodsList(); List scrappedGoodsList = new ArrayList<>(); for (LWhFormScrappedGoodsParams params : scrappedGoodsParamList) { LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods(); scrappedGoods.setId(IdUtil.generateId()); //根据物品型号查询物品库存 int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, scrappedGoods.getBaseGoodsModelsId(), (short) 1, null); if (params.getCounts() > goodsNum) { log.error("报废数量大于库存数量"); return 0; } scrappedGoods.setCounts(params.getCounts()); scrappedGoods.setScrappedCode(params.getScrappedCode()); //TODO 报废原因 scrappedGoodsList.add(scrappedGoods); } int flag2 = this.scrappedGoodsService.insert(scrappedGoodsList); if (flag2 != scrappedGoodsList.size()) { log.error("新增报废单物品记录"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return 0; } return 1; } }