1.待处理单据库存锁定修改,2.单据拆零出库锁定修改,3;单据上下货库存修改,4.上货后触发单据锁定

workplace
yewj 10 months ago
parent 550d22f90a
commit 3b7b118370

@ -1193,9 +1193,9 @@ public class IoCodeTempController extends BaseController {
//计算实际数量
if (bussinessTypeEntity.isUse()) {
codeEnttity.setReCount(codeEnttity.getMyCount() + udiCalCountUtil.getUseActCount(udiRelevanceResponses.get(0)));
codeEnttity.setReCount(codeEnttity.getMyReCount() + udiCalCountUtil.getUseActCount(udiRelevanceResponses.get(0)));
} else {
codeEnttity.setReCount(codeEnttity.getMyCount() + udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
codeEnttity.setReCount(codeEnttity.getMyReCount() + udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
}
} else if (udiRelevanceResponses.size() == 0) {
if (unitFk == null)

@ -117,7 +117,7 @@ public class SysWorkplaceDocumentEntity {
private Integer orderCirType;
/**
* : 1:; 2:
* : 1:; 2:
*/
@TableField(value = "inoutType")
private Integer inoutType;
@ -135,7 +135,11 @@ public class SysWorkplaceDocumentEntity {
private Integer workplaceType;
/**
* : 1:; 0:
*/
@TableField(value = "autoTag")
private Integer autoTag;
}

@ -127,7 +127,7 @@ public class IoCollectOrder implements Serializable {
@ApiModelProperty(value = "更新人")
private Long updateUser;
/**
* 0:1:234,-1:稿
* 0:1:234,-1:稿5
*/
@TableField(value = "tagStatus")
private Integer tagStatus;

@ -127,6 +127,7 @@ public class SysWorkplaceDocumentResponse {
private String innerBusName;
private String outBusName;
private String thrBusName;
private Integer autoTag;
public String getThrBusName() {
if (StrUtil.isNotEmpty(innerBusName))

@ -124,4 +124,6 @@ public class CollectOrderBizResponse {
private String finishUdiCode;
private String bzgg;
private Integer autoResCount;
}

@ -130,6 +130,7 @@ public class IoSplitInvResponse {
private String nameCode;
private Integer remindState;
private String busName;
private Integer availableCount;
}

@ -213,9 +213,6 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, ioOrderEntity.getBillNo()))) {
continue;
}
// BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByAddr(ioOrderEntity.getAction());
// if (collectBustypeEntity == null)
// continue;
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(ioOrderEntity.getAction());
if (sysWorkplaceDocumentEntity == null)
continue;
@ -263,8 +260,7 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
if (collectOrder.getWorkPlaceCode() != null) {
collectOrder.setTagStatus(1);
}
collectOrderList.add(collectOrder);
save(collectOrder);
List<IoOrderDetailBizEntity> orderDetailBizEntities = orderDetailBizService.findByOrderId(ioOrderEntity.getBillNo());
List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>();
@ -296,10 +292,15 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
collectOrderBizService.saveBatch(collectOrderBizs);
}
allWorksList.addAll(sysWorkplaces);
if (IntUtil.value(sysWorkplaceDocumentEntity.getAutoTag()) == 1 && IntUtil.value(collectOrder.getTagStatus()) == 1) {
splitFifoCodeService.lockInventoryByOrder(collectOrder.getBillNo(), 1);
}
if (CollUtil.isNotEmpty(collectOrderList)) {
saveBatch(collectOrderList);
}
// if (CollUtil.isNotEmpty(collectOrderList)) {
// saveBatch(collectOrderList);
// }
// Map<Long, SysWorkplaceResponse> sysWorkplaceMap = new HashMap<>();
// for (SysWorkplaceResponse sysWorkplace : allWorksList) {
@ -373,7 +374,8 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
if (collectOrder.getWorkPlaceCode() != null) {
collectOrder.setTagStatus(1);
}
collectOrderList.add(collectOrder);
// collectOrderList.add(collectOrder);
save(collectOrder);
List<BasicSkPrescribeItemEntity> basicSkPrescribeItemEntities = basicSkPrescirbeDetailService.findByPrescribeNum(basicSkPrescribeEntity.getCode());
List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>();
for (BasicSkPrescribeItemEntity bizEntity : basicSkPrescribeItemEntities) {
@ -400,11 +402,16 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
}
if (CollUtil.isNotEmpty(collectOrderBizs))
collectOrderBizService.saveBatch(collectOrderBizs);
allWorksList.addAll(sysWorkplaces);
if (IntUtil.value(sysWorkplaceDocumentEntity.getAutoTag()) == 1 && IntUtil.value(collectOrder.getTagStatus()) == 1) {
splitFifoCodeService.lockInventoryByOrder(collectOrder.getBillNo(), 1);
}
if (CollUtil.isNotEmpty(collectOrderList)) {
saveBatch(collectOrderList);
}
// if (CollUtil.isNotEmpty(collectOrderList)) {
// saveBatch(collectOrderList);
// }
// Map<Long, SysWorkplaceResponse> sysWorkplaceMap = new HashMap<>();
// for (SysWorkplaceResponse sysWorkplace : allWorksList) {
// sysWorkplaceMap.put(sysWorkplace.getId(), sysWorkplace);

@ -1243,6 +1243,8 @@ public class IoCheckInoutService {
if (orderEntity.getAction().equals(ConstantType.SPLIT_OUT)) {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
fifoInvService.insertInv(codeList, orderEntity.getWorkPlaceCode());
//更新待处理库存不足单据
splitFifoCodeService.updateAllInvAlert(orderEntity.getWorkPlaceCode());
} else if (orderEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
//拆零预出库退回
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());

@ -13,6 +13,7 @@ import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.entity.collect.IoCollectOrderCodeAuto;
import com.glxp.api.entity.inout.IoSplitCodeEntity;
import com.glxp.api.entity.inout.IoSplitFifoCodeEntity;
import com.glxp.api.entity.inout.IoSplitFifoInv;
import com.glxp.api.req.inout.IoSplitCodeRequest;
import com.glxp.api.service.basic.BasicSkPrescribeDiService;
import com.glxp.api.service.basic.BasicSkPrescribeService;
@ -271,6 +272,8 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
}
}
@Resource
IoSplitFifoInvService splitFifoInvService;
/**
*
@ -298,11 +301,20 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
count = IntUtil.value(splitFifoCodeEntity.getScanCount()) + count;
splitCodeEntity.setRemainCount(splitCodeEntity.getScanCount());
}
splitCodeEntity.setStatus(1);
splitCodeEntity.setFifoSplit(splitFifoCodeEntity.getFifoSplit());
splitCodeEntity.setId(null);
addSplitCodeEntities.add(splitCodeEntity);
removeIds.add(splitFifoCodeEntity.getId());
IoSplitFifoInv splitFifoInv = splitFifoInvService.findByFifoCode(splitFifoCodeEntity);
if (splitFifoInv != null) {
splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(splitCodeEntity.getTotalCount()));
splitFifoInv.setLockCount(IntUtil.value(splitFifoInv.getLockCount()) - IntUtil.value(splitCodeEntity.getTotalCount()));
splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount() - IntUtil.value(splitFifoInv.getOutCount())));
splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount() - IntUtil.value(splitFifoInv.getLockCount()) - IntUtil.value(splitFifoInv.getOutCount())));
}
if (count >= needCount) {
break;
}

@ -12,6 +12,7 @@ import com.glxp.api.dao.inout.IoSplitFifoCodeMapper;
import com.glxp.api.dao.inout.IoSplitFifoInvMapper;
import com.glxp.api.entity.auth.SysWorkplace;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.inout.IoSplitFifoCodeEntity;
import com.glxp.api.entity.inout.IoSplitFifoInv;
import com.glxp.api.exception.JsonException;
@ -25,6 +26,7 @@ import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.res.inout.IoSplitCodeResponse;
import com.glxp.api.res.inout.IoSplitInvResponse;
import com.glxp.api.service.auth.SysWorkplaceService;
import com.glxp.api.util.IntUtil;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -159,8 +161,6 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
}
/**
*
* lockType 1 2
@ -219,7 +219,6 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
return true;
}
// /**
// * 预分配库存
// */
@ -306,7 +305,6 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
// return invAlert;
// }
@Transactional(rollbackFor = Exception.class)
Integer autoAllocationBillNoInv(Map<Long, List<IoSplitInvResponse>> splitMap, List<CollectOrderBizResponse> bizList) {
Integer invAlert = 1;
@ -316,15 +314,20 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
CollectOrderBizResponse collectOrderBizResponse = bizList.get(i);
Long relId = collectOrderBizResponse.getRelId();
String batchNo = collectOrderBizResponse.getBatchNo();
Integer count = collectOrderBizResponse.getCount(); //当前明细 需要的数量
//当前明细 需要的数量
Integer count = 0;
if (IntUtil.value(collectOrderBizResponse.getAutoResCount()) < 0) {
count = 0 - IntUtil.value(collectOrderBizResponse.getAutoResCount());
} else {
count = collectOrderBizResponse.getCount();
}
Long bizId = collectOrderBizResponse.getId();
List<IoSplitInvResponse> ioSplitInvResponses = splitMap.get(relId);
List<IoSplitInvResponse> newioSplitCodeResponses = new ArrayList<>(ioSplitInvResponses.size());
if (CollUtil.isNotEmpty(newioSplitCodeResponses)) {
for (int j = 0; j < newioSplitCodeResponses.size(); j++) {
IoSplitInvResponse ioSplit = newioSplitCodeResponses.get(j);
if (CollUtil.isNotEmpty(ioSplitInvResponses)) {
for (int j = 0; j < ioSplitInvResponses.size(); j++) {
IoSplitInvResponse ioSplit = ioSplitInvResponses.get(j);
Integer reCount = ioSplit.getReCount();
Integer lockCount = ioSplit.getLockCount();
Integer totalCount = reCount - lockCount;//剩余可分配数量
@ -332,11 +335,12 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
if ((StrUtil.isBlank(batchNo) || batchNo.equals(ioSplit.getBatchNo())) && count > 0 && totalCount > 0) {
Integer resCount = totalCount - count;//预分配后剩余 工位存量
if (resCount >= 0) {//足够分配
count = 0;
ioSplit.setLockCount(lockCount + count);
IoSplitFifoInv bean = new IoSplitFifoInv();
ioSplit.setAvailableCount(ioSplit.getInCount() - ioSplit.getOutCount() - ioSplit.getLockCount());
BeanUtils.copyProperties(ioSplit, bean);
updateIoSplitFifoInv.add(bean);
count = 0;
} else {//不够分配
count = -resCount;
}
@ -353,11 +357,9 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
collectOrderBizMapper.updateAutoResCount(bizId, collectOrderBizResponse.getCount());
}
}
if (CollUtil.isNotEmpty(updateIoSplitFifoInv)) {
splitFifoInvService.updateBatchById(updateIoSplitFifoInv);
}
return invAlert;
}
@ -375,13 +377,14 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
List<IoSplitInvResponse> ioSplitInvResponses = splitMap.get(relId);
List<IoSplitInvResponse> newioSplitCodeResponses = new ArrayList<>(ioSplitInvResponses.size());
if (CollUtil.isNotEmpty(newioSplitCodeResponses)) {
for (int j = 0; j < newioSplitCodeResponses.size(); j++) {
IoSplitInvResponse ioSplit = newioSplitCodeResponses.get(j);
if (CollUtil.isNotEmpty(ioSplitInvResponses)) {
for (int j = 0; j < ioSplitInvResponses.size(); j++) {
IoSplitInvResponse ioSplit = ioSplitInvResponses.get(j);
Integer lockCount = ioSplit.getLockCount();
if ((StrUtil.isBlank(batchNo) || batchNo.equals(ioSplit.getBatchNo())) && count > 0) {
ioSplit.setLockCount(lockCount - count);
ioSplit.setAvailableCount(ioSplit.getInCount() - ioSplit.getOutCount() - ioSplit.getLockCount());
IoSplitFifoInv bean = new IoSplitFifoInv();
BeanUtils.copyProperties(ioSplit, bean);
updateIoSplitFifoInv.add(bean);
@ -399,4 +402,24 @@ public class IoSplitFifoCodeService extends ServiceImpl<IoSplitFifoCodeMapper, I
}
}
/**
*
*
* @param workPlaceCode
*/
public void updateAllInvAlert(Long workPlaceCode) {
List<IoCollectOrder> collectOrderList =
collectOrderMapper.selectList(new LambdaQueryWrapper<IoCollectOrder>()
.eq(IoCollectOrder::getWorkPlaceCode, workPlaceCode)
.eq(IoCollectOrder::getInvAlert, 2)
);
if (CollUtil.isNotEmpty(collectOrderList)) {
for (IoCollectOrder ioCollectOrder : collectOrderList) {
lockInventoryByOrder(ioCollectOrder.getBillNo(), 1);
}
}
}
}

@ -121,6 +121,14 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
}
splitFifoCodeService.removeBatchByIds(splitCodeEntities);
for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : splitCodeEntities) {
IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity);
if (splitFifoInv != null) {
splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()));
splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount() - IntUtil.value(splitFifoInv.getOutCount())));
}
}
//todo 根据工位产品ID批次号供应商 进行库存表进行移除
ThreadUtil.execAsync(() -> {
@ -129,9 +137,20 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
}
public IoSplitFifoInv findByFifoCode(IoSplitFifoCodeEntity ioSplitFifoCodeEntity) {
IoSplitFifoInv splitFifoInv = getOne(new LambdaQueryWrapper<IoSplitFifoInv>()
.eq(IoSplitFifoInv::getRelId, ioSplitFifoCodeEntity.getRelId())
.eq(IoSplitFifoInv::getWorkPlaceCode, ioSplitFifoCodeEntity.getWorkPlaceCode())
.eq(StrUtil.isNotEmpty(ioSplitFifoCodeEntity.getBatchNo()), IoSplitFifoInv::getBatchNo, ioSplitFifoCodeEntity.getBatchNo())
.eq(ioSplitFifoCodeEntity.getSupId() != null, IoSplitFifoInv::getSupId, ioSplitFifoCodeEntity.getSupId()).last("limit 1"));
return splitFifoInv;
}
/**
*
* 1:2:3:
*
* @param ioSplitFifoInvRequest
* @return
*/
@ -165,6 +184,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
/**
*
*
* @param ioSplitFifoInvRequest
*/
@Transactional(rollbackFor = Exception.class)

Loading…
Cancel
Save