|
|
|
@ -1,10 +1,12 @@
|
|
|
|
|
package com.glxp.api.service.inout;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
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.inout.IoSplitCodeMapper;
|
|
|
|
|
import com.glxp.api.entity.basic.SysWorkplacePutRel;
|
|
|
|
|
import com.glxp.api.entity.basic.UdiRelevanceEntity;
|
|
|
|
@ -14,12 +16,15 @@ 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.basic.FilterUdiRelRequest;
|
|
|
|
|
import com.glxp.api.req.collect.AddInvDesDetaiRequest;
|
|
|
|
|
import com.glxp.api.req.inout.IoSplitCodeRequest;
|
|
|
|
|
import com.glxp.api.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.api.service.basic.UdiRelevanceService;
|
|
|
|
|
import com.glxp.api.service.collect.*;
|
|
|
|
|
import com.glxp.api.service.thrsys.SysWorkplacePutRelService;
|
|
|
|
|
import com.glxp.api.util.GennerOrderUtils;
|
|
|
|
|
import com.glxp.api.util.IntUtil;
|
|
|
|
|
import com.glxp.api.util.OrderNoTypeBean;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
@ -39,6 +44,12 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
IoCollectOrderBizService collectOrderBizService;
|
|
|
|
|
@Resource
|
|
|
|
|
IoCollectOrderCodeAutoService collectOrderCodeAutoService;
|
|
|
|
|
@Resource
|
|
|
|
|
IoSplitDesOrderService splitDesOrderService;
|
|
|
|
|
@Resource
|
|
|
|
|
IoSplitDesOrderDetailService splitDesOrderDetailService;
|
|
|
|
|
@Resource
|
|
|
|
|
GennerOrderUtils gennerOrderUtils;
|
|
|
|
|
|
|
|
|
|
public List<IoSplitCodeEntity> filterList(IoSplitCodeRequest splitCodeRequest) {
|
|
|
|
|
if (splitCodeRequest == null) {
|
|
|
|
@ -235,7 +246,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
List<Integer> removeIds = new ArrayList<>();
|
|
|
|
|
List<Long> removeIds = new ArrayList<>();
|
|
|
|
|
for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) {
|
|
|
|
|
// UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(collectOrderBiz.getRelId());
|
|
|
|
|
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
|
|
|
|
@ -275,6 +286,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
.fifoSplit(1)
|
|
|
|
|
.createTime(new Date()).updateTime(new Date())
|
|
|
|
|
.remainCount(-unTagCount).build();
|
|
|
|
|
this.decorateUnpackExpireTime(ioSplitCodeEntity);
|
|
|
|
|
splitCodeService.save(ioSplitCodeEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -418,7 +430,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
);
|
|
|
|
|
Integer count = 0;
|
|
|
|
|
List<IoSplitCodeEntity> addSplitCodeEntities = new ArrayList<>();
|
|
|
|
|
List<Integer> removeIds = new ArrayList<>();
|
|
|
|
|
List<Long> removeIds = new ArrayList<>();
|
|
|
|
|
for (IoSplitFifoCodeEntity splitFifoCodeEntity : splitFifoCodeEntities) {
|
|
|
|
|
IoSplitCodeEntity splitCodeEntity = new IoSplitCodeEntity();
|
|
|
|
|
BeanUtils.copyProperties(splitFifoCodeEntity, splitCodeEntity);
|
|
|
|
@ -429,6 +441,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
splitCodeEntity.setStatus(1);
|
|
|
|
|
splitCodeEntity.setFifoSplit(splitFifoCodeEntity.getFifoSplit());
|
|
|
|
|
splitCodeEntity.setId(null);
|
|
|
|
|
this.decorateUnpackExpireTime(splitCodeEntity);
|
|
|
|
|
addSplitCodeEntities.add(splitCodeEntity);
|
|
|
|
|
removeIds.add(splitFifoCodeEntity.getId());
|
|
|
|
|
IoSplitFifoInv splitFifoInv = splitFifoInvService.findByFifoCode(splitFifoCodeEntity);
|
|
|
|
@ -488,4 +501,77 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//包装拆包失效时间
|
|
|
|
|
void decorateUnpackExpireTime(IoSplitCodeEntity ioSplitCodeEntity){
|
|
|
|
|
Long relId = ioSplitCodeEntity.getRelId();
|
|
|
|
|
UdiRelevanceEntity relevanceEntity = udiRelevanceService.getById(relId);
|
|
|
|
|
int n = IntUtil.value(relevanceEntity.getUnpackUseTime());
|
|
|
|
|
// 获取当前时间
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
Date unpackTime = calendar.getTime();
|
|
|
|
|
// 加上n小时
|
|
|
|
|
calendar.add(Calendar.HOUR_OF_DAY, n);
|
|
|
|
|
// 转换为Date对象
|
|
|
|
|
Date unpackExpireTime = calendar.getTime();
|
|
|
|
|
ioSplitCodeEntity.setUnpackTime(unpackTime);
|
|
|
|
|
ioSplitCodeEntity.setUnpackExpireTime(unpackExpireTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 扫描拆包过期进行处理损耗出库
|
|
|
|
|
*/
|
|
|
|
|
public void asyncUnpackExpireTask() {
|
|
|
|
|
LambdaQueryWrapper<IoSplitCodeEntity> lqw = new LambdaQueryWrapper<>();
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
lqw.lt(IoSplitCodeEntity::getUnpackExpireTime,now);
|
|
|
|
|
|
|
|
|
|
List<IoSplitCodeEntity> ioSplitCodeEntities = splitCodeMapper.selectList(lqw);
|
|
|
|
|
if (CollUtil.isNotEmpty(ioSplitCodeEntities)){
|
|
|
|
|
//进行损耗出库
|
|
|
|
|
IoSplitDesOrder collectOrder;
|
|
|
|
|
List<IoSplitDesOrderDetail> splitDesOrderDetails = new ArrayList<>();
|
|
|
|
|
List<Long> removeByIds = new ArrayList<>();
|
|
|
|
|
collectOrder = IoSplitDesOrder.builder()
|
|
|
|
|
.id(IdUtil.getSnowflakeNextId())
|
|
|
|
|
.billNo(gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_DES_ORDER, "yyyyMMdd")))
|
|
|
|
|
.busType(null)
|
|
|
|
|
.workPlaceCode(null)
|
|
|
|
|
.createTime(new Date())
|
|
|
|
|
.billTime(new Date())
|
|
|
|
|
.remark(null)
|
|
|
|
|
.status(2)
|
|
|
|
|
.createUser("1")
|
|
|
|
|
.updateTime(new Date())
|
|
|
|
|
.updateUser("1")
|
|
|
|
|
.build();
|
|
|
|
|
splitDesOrderService.save(collectOrder);
|
|
|
|
|
|
|
|
|
|
ioSplitCodeEntities.forEach( splitCodeEntity -> {
|
|
|
|
|
//损耗详细表
|
|
|
|
|
IoSplitDesOrderDetail splitDesOrderDetail = IoSplitDesOrderDetail.builder()
|
|
|
|
|
.id(IdUtil.getSnowflakeNextId())
|
|
|
|
|
.workPlaceCode(collectOrder.getWorkPlaceCode())
|
|
|
|
|
.orderIdFk(collectOrder.getBillNo())
|
|
|
|
|
.relId(splitCodeEntity.getRelId())
|
|
|
|
|
.batchNo(splitCodeEntity.getBatchNo())
|
|
|
|
|
.produceDate(splitCodeEntity.getProduceDate())
|
|
|
|
|
.expireDate(splitCodeEntity.getExpireDate())
|
|
|
|
|
.supId(splitCodeEntity.getSupId())
|
|
|
|
|
.count(splitCodeEntity.getRemainCount())
|
|
|
|
|
.reCount(splitCodeEntity.getRemainCount())
|
|
|
|
|
.createTime(new Date())
|
|
|
|
|
.updateTime(new Date())
|
|
|
|
|
.remark("").build();
|
|
|
|
|
splitDesOrderDetails.add(splitDesOrderDetail);
|
|
|
|
|
removeByIds.add(splitCodeEntity.getId());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (removeByIds.size() > 0) {
|
|
|
|
|
this.removeByIds(removeByIds);
|
|
|
|
|
}
|
|
|
|
|
if (splitDesOrderDetails.size() > 0) {
|
|
|
|
|
splitDesOrderDetailService.saveBatch(splitDesOrderDetails);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|