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-wms-java/src/main/java/com/glxp/api/service/collect/IoSplitDesOrderService.java

203 lines
9.0 KiB
Java

package com.glxp.api.service.collect;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.Constant;
import com.glxp.api.dao.collect.IoSplitDesOrderMapper;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.entity.collect.IoSplitDesOrder;
import com.glxp.api.entity.collect.IoSplitDesOrderCode;
import com.glxp.api.entity.collect.IoSplitDesOrderDetail;
import com.glxp.api.entity.inout.IoSplitFifoCodeEntity;
import com.glxp.api.entity.inout.IoSplitFifoInv;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.collect.AddInvDesDetaiRequest;
import com.glxp.api.req.collect.IoSplitDesOrderRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.collect.IoSplitDesOrderResponse;
import com.glxp.api.service.inout.IoSplitFifoCodeService;
import com.glxp.api.service.inout.IoSplitFifoInvService;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.OrderNoTypeBean;
import org.apache.poi.ss.formula.functions.Offset;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
public class IoSplitDesOrderService extends ServiceImpl<IoSplitDesOrderMapper, IoSplitDesOrder> {
@Resource
IoSplitDesOrderMapper splitDesOrderMapper;
@Resource
IoSplitDesOrderDetailService splitDesOrderDetailService;
@Resource
GennerOrderUtils gennerOrderUtils;
public List<IoSplitDesOrderResponse> filterList(IoSplitDesOrderRequest splitDesOrderRequest) {
if (splitDesOrderRequest == null) {
return Collections.emptyList();
}
if (splitDesOrderRequest.getPage() != null) {
int offset = (splitDesOrderRequest.getPage() - 1) * splitDesOrderRequest.getLimit();
PageHelper.offsetPage(offset, splitDesOrderRequest.getLimit());
}
List<IoSplitDesOrderResponse> data = splitDesOrderMapper.filterList(splitDesOrderRequest);
return data;
}
public IoSplitDesOrder getByBillNo(String billNo) {
return splitDesOrderMapper.selectOne(new LambdaQueryWrapper<IoSplitDesOrder>().eq(IoSplitDesOrder::getBillNo, billNo).last("limit 1"));
}
public IoSplitDesOrder addInv(AddInvDesDetaiRequest addInvDesDetaiRequest) {
IoSplitDesOrder collectOrder;
if (StrUtil.isNotEmpty(addInvDesDetaiRequest.getBillNo())) {
collectOrder = getByBillNo(addInvDesDetaiRequest.getBillNo());
} else {
collectOrder = IoSplitDesOrder.builder()
.billNo(gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_DES_ORDER, "yyyyMMdd")))
.busType("1")
.workPlaceCode(addInvDesDetaiRequest.getWorkPlaceCode())
.createTime(new Date())
.billTime(new Date())
.remark(addInvDesDetaiRequest.getRemark())
.status(1)
.createUser(addInvDesDetaiRequest.getCreateUser())
.updateTime(new Date())
.updateUser(addInvDesDetaiRequest.getUpdateUser())
.build();
save(collectOrder);
}
IoSplitFifoInv splitFifoInv = addInvDesDetaiRequest.getSplitFifoInv();
IoSplitDesOrderDetail splitDesOrderDetail = IoSplitDesOrderDetail.builder()
.id(IdUtil.getSnowflakeNextId())
.workPlaceCode(collectOrder.getWorkPlaceCode())
.orderIdFk(collectOrder.getBillNo())
.invId(splitFifoInv.getId())
.relId(splitFifoInv.getRelId())
.batchNo(splitFifoInv.getBatchNo())
.produceDate(splitFifoInv.getProduceDate())
.expireDate(splitFifoInv.getExpireDate())
.supId(splitFifoInv.getSupId())
.count(splitFifoInv.getReCount())
.reCount(splitFifoInv.getReCount())
.createTime(new Date())
.updateTime(new Date())
.remark("").build();
splitDesOrderDetailService.save(splitDesOrderDetail);
return collectOrder;
}
@Resource
IoSplitFifoCodeService splitFifoCodeService;
@Resource
IoSplitDesOrderCodeService ioSplitDesOrderCodeService;
public IoSplitDesOrder addCode(AddInvDesDetaiRequest addInvDesDetaiRequest) {
IoSplitFifoCodeEntity splitFifoCodeEntity = splitFifoCodeService.findByCode(addInvDesDetaiRequest.getCode(), addInvDesDetaiRequest.getWorkPlaceCode());
if (splitFifoCodeEntity == null) {
throw new JsonException("工位存量不存在,请检查后重试!");
}
IoSplitDesOrder collectOrder;
if (StrUtil.isNotEmpty(addInvDesDetaiRequest.getBillNo())) {
collectOrder = getByBillNo(addInvDesDetaiRequest.getBillNo());
} else {
collectOrder = IoSplitDesOrder.builder()
.billNo(gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_DES_ORDER, "yyyyMMdd")))
.busType("1")
.workPlaceCode(addInvDesDetaiRequest.getWorkPlaceCode())
.createTime(new Date())
.billTime(new Date())
.remark(addInvDesDetaiRequest.getRemark())
.status(1)
.createUser(addInvDesDetaiRequest.getCreateUser())
.updateTime(new Date())
.updateUser(addInvDesDetaiRequest.getUpdateUser())
.build();
save(collectOrder);
}
IoSplitDesOrderCode splitDesOrderCode = new IoSplitDesOrderCode();
BeanUtil.copyProperties(splitFifoCodeEntity, splitDesOrderCode);
splitDesOrderCode.setCount(0);
splitDesOrderCode.setReCount(0);
ioSplitDesOrderCodeService.save(splitDesOrderCode);
return collectOrder;
}
@Resource
IoSplitFifoInvService ioSplitFifoInvService;
@Transactional(rollbackFor = Exception.class)
public Boolean destroyOut(AddInvDesDetaiRequest addInvDesDetaiRequest) {
IoSplitDesOrder collectOrder;
collectOrder = IoSplitDesOrder.builder()
.id(IdUtil.getSnowflakeNextId())
.billNo(gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_DES_ORDER, "yyyyMMdd")))
.busType("1")
.orderType(1)
.workPlaceCode(addInvDesDetaiRequest.getSplitFifoInv().getWorkPlaceCode())
.createTime(new Date())
.billTime(new Date())
.remark(addInvDesDetaiRequest.getRemark())
.status(1)
.createUser(addInvDesDetaiRequest.getCreateUser())
.updateTime(new Date())
.updateUser(addInvDesDetaiRequest.getUpdateUser())
.build();
boolean save = save(collectOrder);
if (!save) {
return false;
}
//拿到 产品库存
IoSplitFifoInv splitFifoInv = ioSplitFifoInvService.getById(addInvDesDetaiRequest.getSplitFifoInv().getId());
//修改产品 库存 出库数量 可用数量 剩余数量
splitFifoInv.setOutCount(splitFifoInv.getOutCount() + addInvDesDetaiRequest.getOutCount());//出库数量
splitFifoInv.setReCount(splitFifoInv.getInCount() - splitFifoInv.getOutCount());//剩余数量
splitFifoInv.setAvailableCount(splitFifoInv.getInCount() - splitFifoInv.getOutCount() - splitFifoInv.getLockCount());
splitFifoInv.setUpdateTime(new Date());
//更改 库存
boolean update = ioSplitFifoInvService.updateById(splitFifoInv);
if (!update) {
return false;
}
// IoSplitFifoInv splitFifoInv = addInvDesDetaiRequest.getSplitFifoInv();
IoSplitDesOrderDetail splitDesOrderDetail = IoSplitDesOrderDetail.builder()
.id(IdUtil.getSnowflakeNextId())
.workPlaceCode(collectOrder.getWorkPlaceCode())
.orderIdFk(collectOrder.getBillNo())
.invId(splitFifoInv.getId())
.relId(splitFifoInv.getRelId())
.batchNo(splitFifoInv.getBatchNo())
.produceDate(splitFifoInv.getProduceDate())
.expireDate(splitFifoInv.getExpireDate())
.supId(splitFifoInv.getSupId())
.count(splitFifoInv.getReCount())
.reCount(splitFifoInv.getReCount())
.createTime(new Date())
.updateTime(new Date())
.remark("").build();
boolean save1 = splitDesOrderDetailService.save(splitDesOrderDetail);
if (!save1) {
return false;
}
return true;
}
}