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.
200 lines
9.6 KiB
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);
|
|
|
|
}
|
|
|
|
|
|
}
|