|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.glxp.api.admin.service.inventory.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
import com.glxp.api.admin.dao.basic.UdiRelevanceDao;
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvCountCodesDao;
|
|
|
|
@ -8,7 +9,9 @@ import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao;
|
|
|
|
|
import com.glxp.api.admin.entity.basic.UdiEntity;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountCodes;
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
|
|
|
|
|
import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvCountCodesRequest;
|
|
|
|
|
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.api.admin.service.inventory.InvCountCodesService;
|
|
|
|
|
import com.glxp.api.admin.util.FilterUdiUtils;
|
|
|
|
|
import com.glxp.api.common.enums.ResultEnum;
|
|
|
|
@ -54,13 +57,13 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UdiEntity udi = FilterUdiUtils.getUdi(list.get(0).getCode());
|
|
|
|
|
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectByOrderIdAndNameCode(list.get(0).getOrderIdFk(), udi.getUdi());
|
|
|
|
|
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(list.get(0).getOrderIdFk(), udi.getUdi(), udi.getBatchNo());
|
|
|
|
|
if (invCountOrderDetail.getCountNum() == 1) {
|
|
|
|
|
//条码数量为1,删除此产品的盘点单据详情
|
|
|
|
|
invCountOrderDetailDao.deleteByPrimaryKey(invCountOrderDetail.getId());
|
|
|
|
|
} else {
|
|
|
|
|
//条码数量大于1,将此单据详情的盘点数量 - 1
|
|
|
|
|
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() - 1);
|
|
|
|
|
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() - getActCount(udi.getUdi()));
|
|
|
|
|
invCountOrderDetailDao.updateByPrimaryKey(invCountOrderDetail);
|
|
|
|
|
}
|
|
|
|
|
//删除此条码
|
|
|
|
@ -70,20 +73,25 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseResponse addCode(InvCountCodes invCountCodes) {
|
|
|
|
|
//查询此条码是否重复
|
|
|
|
|
Long count = invCountCodesDao.selectCountByCodeAndOrderId(invCountCodes.getCode(), invCountCodes.getOrderIdFk());
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
|
|
|
|
|
}
|
|
|
|
|
//解析条码
|
|
|
|
|
UdiEntity udi = FilterUdiUtils.getUdi(invCountCodes.getCode());
|
|
|
|
|
//查询此条码是否重复
|
|
|
|
|
//判断此产品是否有批次号,如果没有批次号,则直接在单据详情的盘点数量上加1
|
|
|
|
|
if (StrUtil.isNotBlank(udi.getBatchNo()) && StrUtil.isNotBlank(udi.getSerialNo())) {
|
|
|
|
|
Long count = invCountCodesDao.selectCountByCodeAndOrderId(invCountCodes.getCode(), invCountCodes.getOrderIdFk());
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询单据详情,单据详情添加
|
|
|
|
|
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectByOrderIdAndNameCode(invCountCodes.getOrderIdFk(), udi.getUdi());
|
|
|
|
|
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(invCountCodes.getOrderIdFk(), udi.getUdi(), udi.getBatchNo());
|
|
|
|
|
if (null == invCountOrderDetail) {
|
|
|
|
|
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库不存在此产品");
|
|
|
|
|
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库或货位不存在此产品");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() + 1);
|
|
|
|
|
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() + getActCount(udi.getUdi()));
|
|
|
|
|
invCountCodes.setProductId(invCountOrderDetail.getProductId());
|
|
|
|
|
invCountOrderDetailDao.updateByPrimaryKey(invCountOrderDetail);
|
|
|
|
|
invCountCodesDao.insert(invCountCodes);
|
|
|
|
@ -95,4 +103,23 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
|
|
|
|
|
return invCountCodesDao.countByOrderId(orderIdFk);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getActCount(String nameCode) {
|
|
|
|
|
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
|
|
|
|
|
filterUdiInfoRequest.setNameCode(nameCode);
|
|
|
|
|
List<UdiRelevanceResponse> list = udiRelevanceDao.filterUdiRelevance(null);
|
|
|
|
|
UdiRelevanceResponse udiInfoBean = list.get(0);
|
|
|
|
|
if (udiInfoBean != null) {
|
|
|
|
|
if (udiInfoBean.getIsUseDy() == 1 && udiInfoBean.getDiType() != 2) {
|
|
|
|
|
if (udiInfoBean.getBhzxxsbzsl() == 0)
|
|
|
|
|
return udiInfoBean.getZxxsbzbhsydysl();
|
|
|
|
|
else
|
|
|
|
|
return udiInfoBean.getZxxsbzbhsydysl() * udiInfoBean.getBhzxxsbzsl();
|
|
|
|
|
} else {
|
|
|
|
|
return udiInfoBean.getBhzxxsbzsl();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|