| | |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.flowable.engine.TaskService; |
| | |
| | | import org.jeecg.modules.flowable.apithird.service.FlowCommonService; |
| | | import org.jeecg.modules.flowable.service.IFlowDefinitionService; |
| | | import org.jeecg.modules.flowable.service.IFlowTaskService; |
| | | import org.jeecg.modules.tms.entity.InboundOrder; |
| | | import org.jeecg.modules.tms.entity.*; |
| | | import org.jeecg.modules.tms.entity.dto.InboundOrderFlowDto; |
| | | import org.jeecg.modules.tms.entity.vo.InboundDetailVo; |
| | | import org.jeecg.modules.tms.mapper.InboundOrderMapper; |
| | | import org.jeecg.modules.tms.service.IInboundOrderService; |
| | | import org.jeecg.modules.tms.service.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private IFlowMyBusinessService flowMyBusinessService; |
| | | |
| | | @Autowired |
| | | private IBaseToolsService baseToolsService; |
| | | |
| | | @Autowired |
| | | private IInStoreDetailService inStoreDetailService; |
| | | |
| | | @Autowired |
| | | private IToolLedgerService toolLedgerService; |
| | | |
| | | @Autowired |
| | | private IToolLedgerDetailService toolLedgerDetailService; |
| | | |
| | | @Autowired |
| | | private IInboundDetailService inboundDetailService; |
| | | |
| | | @Autowired |
| | | private IGoodsShelvesService goodsShelvesService; |
| | | @Override |
| | | public boolean submit(String id) { |
| | | InboundOrder inboundOrder = this.getById(id); |
| | | //借用和刃磨入库时校验库存 |
| | | List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,id).list(); |
| | | if("2".equals(inboundOrder.getInStorehouseType())){ |
| | | for(InboundDetail inboundDetail : inboundDetailList){ |
| | | if(StringUtils.isNotBlank(inboundDetail.getToolId())){ |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one(); |
| | | if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){ |
| | | throw new JeecgBootException("编码为【" + toolLedgerDetail.getToolId() + "】的工具未借出,不需要归还入库!"); |
| | | } |
| | | }else { |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one(); |
| | | if(toolLedger.getLendCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){ |
| | | throw new JeecgBootException("编码为【" + toolLedger.getToolId() + "】的工具未借出,不需要归还入库!"); |
| | | } |
| | | } |
| | | } |
| | | }else if("5".equals(inboundOrder.getInStorehouseType())){ |
| | | for(InboundDetail inboundDetail : inboundDetailList){ |
| | | if(StringUtils.isNotBlank(inboundDetail.getToolId())){ |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one(); |
| | | if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){ |
| | | throw new JeecgBootException("编码为【" + toolLedgerDetail.getToolId() + "】的工具未刃磨,不需要刃磨入库!"); |
| | | } |
| | | }else { |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one(); |
| | | if(toolLedger.getSharpeningCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){ |
| | | throw new JeecgBootException("编码为【" + toolLedger.getToolId() + "】的工具未刃磨,不需要刃磨入库!"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //发起审批流程 |
| | | this.triggerProcess(inboundOrder); |
| | | //更新入库单审批状态为已提交 |
| | |
| | | variables.put("comment", "新增入库申请单默认启动流程"); |
| | | variables.put("proofreading", true); |
| | | List<String> usernames = new ArrayList<>(); |
| | | usernames.add(inboundOrder.getHandler()); |
| | | usernames.add(inboundOrder.getReviewer()); |
| | | variables.put("NextAssignee", usernames); |
| | | Result result = flowDefinitionService.startProcessInstanceByKey("tool_in_storage", variables); |
| | | return result.isSuccess(); |
| | |
| | | |
| | | //根据任务完成结果更新申请单状态 |
| | | if (result.isSuccess()) { |
| | | inboundOrder.setOrderStatus(inboundOrderFlowDto.getStatus()); |
| | | if ("3".equals(inboundOrderFlowDto.getStatus())) { |
| | | inboundOrder.setInStatus("1"); |
| | | inboundOrder.setOrderStatus("3"); |
| | | }else if("4".equals(inboundOrderFlowDto.getStatus())){ |
| | | inboundOrder.setOrderStatus("1"); |
| | | } |
| | | inboundOrder.setReviewer(user.getUsername()); |
| | | inboundOrder.setApprovalDate(new Date()); |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void addInStorage(JSONObject jSONObject) { |
| | | String inStorehouseType = jSONObject.getString("inStorehouseType"); |
| | | String locationCodeId = jSONObject.getString("locationCodeId"); |
| | | String classifyId = jSONObject.getString("classifyId"); |
| | | Date inboundTime = jSONObject.getDate("inboundTime"); |
| | | //获取入库明细 |
| | | JSONArray jsonArray = jSONObject.getJSONArray("detailData"); |
| | | List<InboundDetailVo> inStoreDetailList =jsonArray.toJavaList(InboundDetailVo.class); |
| | | //新货入库 |
| | | if("1".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList){ |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //操作库存,查询总库存是否存在该类刀具 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetailVo.getToolCodeId()).one(); |
| | | if(toolLedger == null){ |
| | | ToolLedger newToolLedger = new ToolLedger(); |
| | | newToolLedger.setToolId(inboundDetailVo.getToolCodeId()); |
| | | newToolLedger.setAvailableCount(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedger.setTotalCount(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedger.setLendCount(BigDecimal.ZERO); |
| | | newToolLedger.setDetectionCount(BigDecimal.ZERO); |
| | | newToolLedger.setLossCount(BigDecimal.ZERO); |
| | | newToolLedger.setRepairCount(BigDecimal.ZERO); |
| | | newToolLedger.setSharpeningCount(BigDecimal.ZERO); |
| | | newToolLedger.setClassifyId(classifyId); |
| | | toolLedgerService.save(newToolLedger); |
| | | }else { |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setTotalCount(toolLedger.getTotalCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | } |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //循环入库数量,为实物赋码 |
| | | for(int i=0;i<inboundDetailVo.getInStorageQuantity().intValue();i++){ |
| | | BaseTools newBaseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //查询当前编码 |
| | | String currentCode = newBaseTools.getCurrentCode(); |
| | | //将字符串转换为整数 |
| | | int num = Integer.parseInt(currentCode); |
| | | //加1操作 |
| | | num++; |
| | | //转换回字符串并保留前导零 |
| | | String result = String.format("%0" + currentCode.length() + "d", num); |
| | | //打印二维码 |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("1"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //增加库存明细 |
| | | ToolLedgerDetail toolLedgerDetail = new ToolLedgerDetail(); |
| | | toolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | toolLedgerDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.save(toolLedgerDetail); |
| | | //更新当前编码 |
| | | newBaseTools.setCurrentCode(result); |
| | | baseToolsService.updateById(newBaseTools); |
| | | } |
| | | //不管到把 |
| | | }else { |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("1"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //查询库存明细中是否存在该工具 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | if(toolLedgerDetail == null){ |
| | | ToolLedgerDetail newToolLedgerDetail = new ToolLedgerDetail(); |
| | | newToolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | newToolLedgerDetail.setQuantity(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.save(newToolLedgerDetail); |
| | | }else { |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | } |
| | | } |
| | | } |
| | | //归还入库 |
| | | }else if("2".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList) { |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //增加可用库存,减少借出库存 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() |
| | | .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) |
| | | .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("2"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //不管到把 |
| | | }else { |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("2"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | } |
| | | |
| | | } |
| | | }else if("5".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList) { |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //增加总库存及可用库存,减少刃磨库存 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() |
| | | .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) |
| | | .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("5"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //不管到把 |
| | | }else { |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(inboundTime); |
| | | inStoreDetail.setOperateType("2"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("5"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void addApplyInStorage(JSONObject jSONObject) { |
| | | String inStorehouseType = jSONObject.getString("inStorehouseType"); |
| | | String locationCodeId = jSONObject.getString("locationCodeId"); |
| | | //入库申请单id |
| | | String orderId = jSONObject.getString("orderId"); |
| | | //获取入库明细 |
| | | JSONArray jsonArray = jSONObject.getJSONArray("detailData"); |
| | | List<InboundDetailVo> inStoreDetailList =jsonArray.toJavaList(InboundDetailVo.class); |
| | | //新货入库 |
| | | if("1".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList){ |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //操作库存,查询总库存是否存在该类刀具 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetailVo.getToolCodeId()).one(); |
| | | if(toolLedger == null){ |
| | | ToolLedger newToolLedger = new ToolLedger(); |
| | | newToolLedger.setToolId(inboundDetailVo.getToolCodeId()); |
| | | newToolLedger.setAvailableCount(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedger.setTotalCount(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedger.setLendCount(BigDecimal.ZERO); |
| | | newToolLedger.setDetectionCount(BigDecimal.ZERO); |
| | | newToolLedger.setLossCount(BigDecimal.ZERO); |
| | | newToolLedger.setRepairCount(BigDecimal.ZERO); |
| | | newToolLedger.setSharpeningCount(BigDecimal.ZERO); |
| | | newToolLedger.setClassifyId(inboundDetailVo.getClassifyId()); |
| | | toolLedgerService.save(newToolLedger); |
| | | }else { |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setTotalCount(toolLedger.getTotalCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | } |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //循环入库数量,为实物赋码 |
| | | for(int i=0;i<inboundDetailVo.getInStorageQuantity().intValue();i++){ |
| | | BaseTools newBaseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //查询当前编码 |
| | | String currentCode = newBaseTools.getCurrentCode(); |
| | | //将字符串转换为整数 |
| | | int num = Integer.parseInt(currentCode); |
| | | //加1操作 |
| | | num++; |
| | | //转换回字符串并保留前导零 |
| | | String result = String.format("%0" + currentCode.length() + "d", num); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("1"); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //增加库存明细 |
| | | ToolLedgerDetail toolLedgerDetail = new ToolLedgerDetail(); |
| | | toolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | toolLedgerDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.save(toolLedgerDetail); |
| | | //更新当前编码 |
| | | newBaseTools.setCurrentCode(result); |
| | | baseToolsService.updateById(newBaseTools); |
| | | } |
| | | //不管到把 |
| | | }else { |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("1"); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //查询库存明细中是否存在该工具 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | if(toolLedgerDetail == null){ |
| | | ToolLedgerDetail newToolLedgerDetail = new ToolLedgerDetail(); |
| | | newToolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | newToolLedgerDetail.setQuantity(inboundDetailVo.getInStorageQuantity()); |
| | | newToolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.save(newToolLedgerDetail); |
| | | }else { |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | } |
| | | } |
| | | //更改明细入库状态及实际入库数量 |
| | | InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); |
| | | inboundDetail.setInStatus("3"); |
| | | inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); |
| | | inboundDetailService.updateById(inboundDetail); |
| | | } |
| | | //归还入库 |
| | | }else if("2".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList) { |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //增加可用库存,减少借出库存 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() |
| | | .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) |
| | | .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("2"); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //不管到把 |
| | | }else { |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("2"); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | } |
| | | //更改明细入库状态及实际入库数量 |
| | | InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); |
| | | inboundDetail.setInStatus("3"); |
| | | inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); |
| | | inboundDetailService.updateById(inboundDetail); |
| | | } |
| | | }else if("5".equals(inStorehouseType)){ |
| | | //循环新增明细 |
| | | for(InboundDetailVo inboundDetailVo : inStoreDetailList) { |
| | | //查询是否管到把,管到把的查询当前编码 |
| | | BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); |
| | | //增加总库存及可用库存,减少刃磨库存 |
| | | ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerService.updateById(toolLedger); |
| | | //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId |
| | | //管到把 |
| | | if("1".equals(baseTools.getAccuracyClass())){ |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() |
| | | .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) |
| | | .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); |
| | | toolLedgerDetail.setQuantity(BigDecimal.ONE); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(BigDecimal.ONE); |
| | | inStoreDetail.setInStorehouseType("5"); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | //不管到把 |
| | | }else { |
| | | //增加库存明细可用库存,修改状态 |
| | | ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); |
| | | toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); |
| | | toolLedgerDetail.setStatus("1"); |
| | | toolLedgerDetailService.updateById(toolLedgerDetail); |
| | | //保存入库流水 |
| | | InStoreDetail inStoreDetail = new InStoreDetail(); |
| | | inStoreDetail.setInboundTime(new Date()); |
| | | inStoreDetail.setOperateType("1"); |
| | | inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); |
| | | inStoreDetail.setInStorehouseType("5"); |
| | | inStoreDetail.setInStorehouseId(orderId); |
| | | inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); |
| | | inStoreDetail.setGoodsShelvesId(locationCodeId); |
| | | inStoreDetailService.save(inStoreDetail); |
| | | } |
| | | //更改明细入库状态及实际入库数量 |
| | | InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); |
| | | inboundDetail.setInStatus("3"); |
| | | inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); |
| | | inboundDetailService.updateById(inboundDetail); |
| | | } |
| | | } |
| | | //更改申请单入库状态 |
| | | InboundOrder inboundOrder = this.getById(orderId); |
| | | List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,orderId).list(); |
| | | boolean flag = inboundDetailList.stream().allMatch(inboundDetail -> "3".equals(inboundDetail.getInStatus())); |
| | | if(flag){ |
| | | inboundOrder.setInStatus("3"); |
| | | }else { |
| | | inboundOrder.setInStatus("2"); |
| | | } |
| | | this.updateById(inboundOrder); |
| | | } |
| | | |
| | | private LoginUser getCurrentUser() { |
| | | // 获取当前认证的登录用户信息 |
| | | Subject currentUser = SecurityUtils.getSubject(); |