package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBusTypePreEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.*; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBusTypePreService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.*; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; @Service public class IoGenInvService { @Resource InvProductService invProductService; @Resource InvProductDetailService invProductDetailService; @Resource InvPreinOrderService invPreinOrderService; @Resource InvPreinDetailService invPreinDetailService; @Resource IoOrderService orderService; @Resource IoOrderDetailResultService orderDetailResultService; @Resource IoCodeService codeService; @Resource IBasicBusTypePreService basicBusTypePreService; @Resource IoChangeInoutService ioChangeInoutService; //生成普通库存 public void genNorInv(String orderId) { IoOrderEntity orderEntity = orderService.findByBillNo(orderId); List orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId); List codeEnttities = codeService.findByOrderId(orderId); //生成库存产品表 for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { InvProductEntity invProductEntity = invProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); if (invProductEntity == null) { invProductEntity = new InvProductEntity(); invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk()); invProductEntity.setNameCode(orderDetailResultEntity.getNameCode()); invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo()); invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate()); invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate()); invProductEntity.setInCount(0); invProductEntity.setOutCount(0); invProductEntity.setSupId(orderDetailResultEntity.getSupId()); invProductEntity.setDeptCode(orderEntity.getDeptCode()); invProductEntity.setInvCode(orderEntity.getInvCode()); invProductEntity.setCreateTime(new Date()); invProductEntity.setUpdateTime(new Date()); invProductService.insert(invProductEntity); } if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount()); } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount()); } invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount()); invProductEntity.setUpdateTime(new Date()); invProductService.update(invProductEntity); } //生成库存码详情 List invProductDetailEntities = new ArrayList<>(); for (IoCodeEntity codeEntity : codeEnttities) { InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity(); BeanUtils.copyProperties(codeEntity, invProductDetailEntity); invProductDetailEntity.setRelId(codeEntity.getRelId()); invProductDetailEntity.setUpdateTime(new Date()); invProductDetailEntity.setId(null); invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON); if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductDetailEntity.setInCount(invProductDetailEntity.getReCount()); } else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invProductDetailEntity.setOutCount(invProductDetailEntity.getReCount()); } invProductDetailEntities.add(invProductDetailEntity); } BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction()); if (basicBusTypePreEntity != null) { //进行单据流转 ioChangeInoutService.genNewOrder(orderEntity, invProductDetailEntities); } else { //生成库存结束 invProductDetailService.insertList(invProductDetailEntities); } } @Resource InvPreProductService invPreProductService; @Resource InvPreProductDetailService invPreProductDetailService; @Resource InvPreinProductDetailService invPreinProductDetailService; //生成寄售库存 public void genPreInv(String orderId) { IoOrderEntity orderEntity = orderService.findByBillNo(orderId); List orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId); List codeEnttities = codeService.findByOrderId(orderId); //生成库存产品表 for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { InvPreProductEntity invPreProductEntity = invPreProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); if (invPreProductEntity == null) { invPreProductEntity = new InvPreProductEntity(); invPreProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk()); invPreProductEntity.setNameCode(orderDetailResultEntity.getNameCode()); invPreProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo()); invPreProductEntity.setProductionDate(orderDetailResultEntity.getProductDate()); invPreProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate()); invPreProductEntity.setInCount(0); invPreProductEntity.setOutCount(0); invPreProductEntity.setSupId(orderDetailResultEntity.getSupId()); invPreProductEntity.setDeptCode(orderEntity.getDeptCode()); invPreProductEntity.setInvCode(orderEntity.getInvCode()); invPreProductEntity.setCreateTime(new Date()); invPreProductEntity.setUpdateTime(new Date()); invPreProductService.insert(invPreProductEntity); } if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invPreProductEntity.setOutCount(invPreProductEntity.getOutCount() + orderDetailResultEntity.getReCount()); } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invPreProductEntity.setInCount(invPreProductEntity.getInCount() + orderDetailResultEntity.getReCount()); } invPreProductEntity.setReCount(invPreProductEntity.getInCount() - invPreProductEntity.getOutCount()); invPreProductEntity.setUpdateTime(new Date()); invPreProductService.update(invPreProductEntity); } //生成库存码详情 List invProductDetailEntities = new ArrayList<>(); for (IoCodeEntity codeEntity : codeEnttities) { InvPreProductDetailEntity invProductDetailEntity = new InvPreProductDetailEntity(); BeanUtils.copyProperties(codeEntity, invProductDetailEntity); invProductDetailEntity.setRelId(codeEntity.getRelId()); invProductDetailEntity.setUpdateTime(new Date()); invProductDetailEntity.setId(null); invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON); if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductDetailEntity.setInCount(invProductDetailEntity.getReCount()); } else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invProductDetailEntity.setOutCount(invProductDetailEntity.getReCount()); } invProductDetailEntities.add(invProductDetailEntity); } invPreProductDetailService.insertList(invProductDetailEntities); } @Resource InvPreinProductService invPreinProductService; //生成预验收库存 public void genPreInInv(String orderId) { //入库预验收进入到实际在库码表 IoOrderEntity orderEntity = orderService.findByBillNo(orderId); if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity(); BeanUtils.copyProperties(orderEntity, invPreinOrderEntity); invPreinOrderService.insert(invPreinOrderEntity); List codeEnttities = codeService.findByOrderId(orderId); List invPreinDetailEntities = new ArrayList<>(); codeEnttities.forEach(codeEntity -> { InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity(); BeanUtils.copyProperties(codeEntity, invPreinDetailEntity); invPreinDetailEntity.setId(null); invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); invPreinDetailEntity.setOriginCount(codeEntity.getCount()); invPreinDetailEntity.setOriginReCount(codeEntity.getReCount()); invPreinDetailEntities.add(invPreinDetailEntity); }); invPreinDetailService.insertList(invPreinDetailEntities); } //走正常流程,生成对应库存 // 生成库存产品信息表 List orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId); //生成库存产品表 for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { InvPreinProductEntity invProductEntity = invPreinProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); if (invProductEntity == null) { invProductEntity = new InvPreinProductEntity(); invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk()); invProductEntity.setNameCode(orderDetailResultEntity.getNameCode()); invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo()); invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate()); invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate()); invProductEntity.setInCount(0); invProductEntity.setOutCount(0); invProductEntity.setSupId(orderDetailResultEntity.getSupId()); invProductEntity.setDeptCode(orderEntity.getDeptCode()); invProductEntity.setInvCode(orderEntity.getInvCode()); invProductEntity.setCreateTime(new Date()); invProductEntity.setUpdateTime(new Date()); invPreinProductService.insert(invProductEntity); } if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount()); } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount()); } invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount()); invProductEntity.setUpdateTime(new Date()); invPreinProductService.update(invProductEntity); } List codeEnttities = codeService.findByOrderId(orderId); //生成库存码详情 List invProductDetailEntities = new ArrayList<>(); for (IoCodeEntity codeEntity : codeEnttities) { InvPreInProductDetailEntity invProductDetailEntity = new InvPreInProductDetailEntity(); BeanUtils.copyProperties(codeEntity, invProductDetailEntity); invProductDetailEntity.setRelId(codeEntity.getRelId()); invProductDetailEntity.setUpdateTime(new Date()); invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON); invProductDetailEntity.setId(null); if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { invProductDetailEntity.setInCount(invProductDetailEntity.getReCount()); } else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { invProductDetailEntity.setOutCount(invProductDetailEntity.getReCount()); } invProductDetailEntities.add(invProductDetailEntity); } invPreinProductDetailService.insertList(invProductDetailEntities); } }