|
|
@ -1,23 +1,33 @@
|
|
|
|
package com.glxp.api.admin.service.inventory.impl;
|
|
|
|
package com.glxp.api.admin.service.inventory.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
import com.glxp.api.admin.constant.Constant;
|
|
|
|
import com.glxp.api.admin.constant.Constant;
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvCountCodesDao;
|
|
|
|
import com.glxp.api.admin.constant.ConstantStatus;
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvCountOrderDao;
|
|
|
|
import com.glxp.api.admin.constant.ConstantType;
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao;
|
|
|
|
import com.glxp.api.admin.dao.basic.BussinessTypeDao;
|
|
|
|
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
|
|
|
|
import com.glxp.api.admin.dao.basic.UnitMaintainDao;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.dao.inventory.*;
|
|
|
|
import com.glxp.api.admin.entity.auth.AuthAdmin;
|
|
|
|
import com.glxp.api.admin.entity.auth.AuthAdmin;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.entity.basic.UnitMaintainEntity;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.entity.inout.OrderEntity;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.entity.inout.WarehouseEntity;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountCodes;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountCodes;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountOrder;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountOrder;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.entity.inventory.InvCountSettingEntity;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvCountCodesRequest;
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvCountOrderRequest;
|
|
|
|
import com.glxp.api.admin.req.inventory.FilterInvCountOrderRequest;
|
|
|
|
import com.glxp.api.admin.res.inventory.InvCountOrderResponse;
|
|
|
|
import com.glxp.api.admin.res.inventory.InvCountOrderResponse;
|
|
|
|
import com.glxp.api.admin.service.auth.CustomerService;
|
|
|
|
import com.glxp.api.admin.service.auth.CustomerService;
|
|
|
|
import com.glxp.api.admin.service.inventory.InvCountOrderService;
|
|
|
|
import com.glxp.api.admin.service.inventory.InvCountOrderService;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.util.CustomUtil;
|
|
|
|
import com.glxp.api.admin.util.GennerOrderUtils;
|
|
|
|
import com.glxp.api.admin.util.GennerOrderUtils;
|
|
|
|
|
|
|
|
import com.glxp.api.admin.util.MyStrUtil;
|
|
|
|
import com.glxp.api.admin.util.OrderNoTypeBean;
|
|
|
|
import com.glxp.api.admin.util.OrderNoTypeBean;
|
|
|
|
import com.glxp.api.common.enums.ResultEnum;
|
|
|
|
import com.glxp.api.common.enums.ResultEnum;
|
|
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
|
@ -27,6 +37,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
@ -47,6 +58,12 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
private CustomerService customerService;
|
|
|
|
private CustomerService customerService;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private InvProductDetailDao invProductDetailDao;
|
|
|
|
private InvProductDetailDao invProductDetailDao;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private InvCountSettingDao invCountSettingDao;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private BussinessTypeDao bussinessTypeDao;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private UnitMaintainDao unitMaintainDao;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
|
|
|
|
public List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
|
|
|
@ -161,12 +178,96 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
|
|
|
|
invCountCodesDao.resetCountFiledValue(invCountOrder.getOrderId());
|
|
|
|
invCountCodesDao.resetCountFiledValue(invCountOrder.getOrderId());
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
//审核通过
|
|
|
|
//审核通过
|
|
|
|
//todo 根据单据详情生成相关单据
|
|
|
|
//根据单据详情生成相关单据
|
|
|
|
|
|
|
|
countOrderTransfer(invCountOrder);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
invCountOrderDao.updateByPrimaryKey(invCountOrder);
|
|
|
|
invCountOrderDao.updateByPrimaryKey(invCountOrder);
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 盘点单据转扫码单
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param invCountOrder
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void countOrderTransfer(InvCountOrder invCountOrder) {
|
|
|
|
|
|
|
|
List<InvCountSettingEntity> list = invCountSettingDao.filterList(null);
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(list)) {
|
|
|
|
|
|
|
|
log.error("未配置盘点单据设置参数,无法转单");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
List<InvCountOrderDetail> detailList = invCountOrderDetailDao.selectByOrderId(invCountOrder.getOrderId());
|
|
|
|
|
|
|
|
List<InvCountOrderDetail> inDetailList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<InvCountOrderDetail> outDetailList = new ArrayList<>();
|
|
|
|
|
|
|
|
for (InvCountOrderDetail invCountOrderDetail : detailList) {
|
|
|
|
|
|
|
|
if (invCountOrderDetail.getStatus() == 0) {
|
|
|
|
|
|
|
|
//亏损,做出库单
|
|
|
|
|
|
|
|
outDetailList.add(invCountOrderDetail);
|
|
|
|
|
|
|
|
} else if (invCountOrderDetail.getStatus() == 1) {
|
|
|
|
|
|
|
|
//盈利,做入库单
|
|
|
|
|
|
|
|
inDetailList.add(invCountOrderDetail);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InvCountSettingEntity invCountSettingEntity = list.get(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(inDetailList)) {
|
|
|
|
|
|
|
|
log.info("盘点单据:" + invCountOrder.getOrderId() + " 转入库单开始");
|
|
|
|
|
|
|
|
//查询盘点入库单据类型
|
|
|
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeDao.selectByAction(invCountSettingEntity.getInAction());
|
|
|
|
|
|
|
|
log.info("盘点入库单据类型为:" + bussinessTypeEntity.getName() + " ,单据类型编码为:" + invCountSettingEntity.getInAction());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//构造单据数据
|
|
|
|
|
|
|
|
OrderEntity orderEntity = new OrderEntity();
|
|
|
|
|
|
|
|
orderEntity.setMainAction(ConstantType.TYPE_PUT);
|
|
|
|
|
|
|
|
orderEntity.setAction(invCountSettingEntity.getInAction());
|
|
|
|
|
|
|
|
orderEntity.setActDate(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
|
|
|
|
|
|
|
|
orderEntity.setCreateTime(orderEntity.getActDate());
|
|
|
|
|
|
|
|
orderEntity.setInvStorageCode(invCountOrder.getInvStorageCode());
|
|
|
|
|
|
|
|
orderEntity.setInvWarehouseCode(invCountOrder.getInvWarehouseCode());
|
|
|
|
|
|
|
|
//查询单据往来单位数据
|
|
|
|
|
|
|
|
UnitMaintainEntity unitMaintainEntity = unitMaintainDao.selectByErpId(bussinessTypeEntity.getDefaultUnit());
|
|
|
|
|
|
|
|
orderEntity.setFromCorpId(unitMaintainEntity.getErpId());
|
|
|
|
|
|
|
|
orderEntity.setFromCorp(unitMaintainEntity.getName());
|
|
|
|
|
|
|
|
orderEntity.setCorpOrderId(CustomUtil.getId() + "x");
|
|
|
|
|
|
|
|
orderEntity.setExportStatus(0); //设置导出状态为未导出
|
|
|
|
|
|
|
|
orderEntity.setContrastStatus(0);//设置erp校验状态为未校验
|
|
|
|
|
|
|
|
orderEntity.setReceiveStatus(0); //设置验收状态为未验收
|
|
|
|
|
|
|
|
orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
|
|
|
|
|
|
|
|
orderEntity.setErpFk(null);//关联业务单据置空
|
|
|
|
|
|
|
|
orderEntity.setFromType(ConstantStatus.FROM_COUNT); //单据来源设置为盘点单据转单
|
|
|
|
|
|
|
|
orderEntity.setLocStorageCode(invCountOrder.getInvStorageCode());
|
|
|
|
|
|
|
|
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + MyStrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查找盘点码中标记为多的码
|
|
|
|
|
|
|
|
FilterInvCountCodesRequest codesRequest = new FilterInvCountCodesRequest();
|
|
|
|
|
|
|
|
codesRequest.setOrderIdFk(invCountOrder.getOrderId());
|
|
|
|
|
|
|
|
codesRequest.setStatus(1);
|
|
|
|
|
|
|
|
List<InvCountCodes> codesList = invCountCodesDao.filterList(codesRequest);
|
|
|
|
|
|
|
|
List<WarehouseEntity> warehouseEntities = new ArrayList<>(codesList.size());
|
|
|
|
|
|
|
|
codesList.forEach(invCountCodes -> {
|
|
|
|
|
|
|
|
WarehouseEntity warehouseEntity = new WarehouseEntity();
|
|
|
|
|
|
|
|
warehouseEntity.setCode(invCountCodes.getCode());
|
|
|
|
|
|
|
|
warehouseEntity.setRelId(invCountCodes.getProductId());
|
|
|
|
|
|
|
|
warehouseEntity.setAction(invCountSettingEntity.getInAction());
|
|
|
|
|
|
|
|
warehouseEntity.setMainAction(ConstantType.TYPE_PUT);
|
|
|
|
|
|
|
|
warehouseEntity.setActor(invCountOrder.getCreateUser());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
warehouseEntities.add(warehouseEntity);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(outDetailList)) {
|
|
|
|
|
|
|
|
log.info("盘点单据:" + invCountOrder.getOrderId() + " 转出库单开始");
|
|
|
|
|
|
|
|
//查询盘点入库单据类型
|
|
|
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeDao.selectByAction(invCountSettingEntity.getOutAction());
|
|
|
|
|
|
|
|
log.info("盘点出库单据类型为:" + bussinessTypeEntity.getName() + " ,单据类型编码为:" + bussinessTypeEntity.getAction());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|