You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-spms-java/src/main/java/com/glxp/api/service/inout/IoGenInvService.java

200 lines
9.6 KiB
Java

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<IoOrderDetailResultEntity> orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId);
List<IoCodeEntity> 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<InvProductDetailEntity> invProductDetailEntities = new ArrayList<>();
for (IoCodeEntity codeEntity : codeEnttities) {
InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity();
BeanUtils.copyProperties(codeEntity, invProductDetailEntity);
invProductDetailEntity.setRelId(codeEntity.getRelId());
invProductDetailEntity.setUpdateTime(new Date());
invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON);
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;
//生成寄售库存
public void genPreInv(String orderId) {
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
List<IoOrderDetailResultEntity> orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId);
List<IoCodeEntity> 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<InvPreProductDetailEntity> invProductDetailEntities = new ArrayList<>();
for (IoCodeEntity codeEntity : codeEnttities) {
InvPreProductDetailEntity invProductDetailEntity = new InvPreProductDetailEntity();
BeanUtils.copyProperties(codeEntity, invProductDetailEntity);
invProductDetailEntity.setRelId(codeEntity.getRelId());
invProductDetailEntity.setUpdateTime(new Date());
invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON);
invProductDetailEntities.add(invProductDetailEntity);
}
invPreProductDetailService.insertList(invProductDetailEntities);
}
//生成预验收库存
public void genPreInInv(String orderId) {
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity();
BeanUtils.copyProperties(orderEntity, invPreinOrderEntity);
invPreinOrderService.insert(invPreinOrderEntity);
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderId);
List<InvPreinDetailEntity> 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);
}
}