1.单据删除,删除预验收库库存

fencang
x_z 3 years ago
parent df7d724d14
commit 47bbfbaf89

@ -31,4 +31,11 @@ public interface BussinessLocalTypeDao {
boolean deleteById(@Param("id") String id);
BussinessLocalTypeEntity selectById(String id);
/**
*
*
* @param action
*/
boolean selectPreInByOrderType(String action);
}

@ -30,4 +30,11 @@ public interface InvPreInProductDetailDao {
List<String> findAllCode(FilterInvProductDetailRequest filterInvProductDetailRequest);
boolean deleteAll();
/**
* orderId
*
* @param orderIdFk ID
*/
boolean deleteByOrderId(String orderIdFk);
}

@ -7,12 +7,10 @@ import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.sale.admin.constant.ConstantStatus;
import com.glxp.sale.admin.constant.ConstantType;
import com.glxp.sale.admin.dao.basic.BussinessLocalTypeDao;
import com.glxp.sale.admin.dao.basic.BussinessTypeDao;
import com.glxp.sale.admin.dao.inout.*;
import com.glxp.sale.admin.dao.inventory.InvProductDao;
import com.glxp.sale.admin.dao.inventory.InvProductDetailDao;
import com.glxp.sale.admin.dao.inventory.InvSubWarehouseDao;
import com.glxp.sale.admin.dao.inventory.InvWarehouseDao;
import com.glxp.sale.admin.dao.inventory.*;
import com.glxp.sale.admin.entity.basic.BussinessTypeEntity;
import com.glxp.sale.admin.entity.inout.OrderEntity;
import com.glxp.sale.admin.entity.inout.StockOrderEntity;
@ -49,25 +47,25 @@ import java.util.stream.Collectors;
public class OrderServiceImpl implements OrderService {
@Resource
OrderDao orderDao;
private OrderDao orderDao;
@Resource
WarehouseDao warehouseDao;
private WarehouseDao warehouseDao;
@Resource
BussinessTypeDao bussinessTypeDao;
private BussinessTypeDao bussinessTypeDao;
@Resource
StockOrderDao stockOrderDao;
private StockOrderDao stockOrderDao;
@Resource
InvWarehouseDao invWarehouseDao;
private InvWarehouseDao invWarehouseDao;
@Resource
InvSubWarehouseService invSubWarehouseService;
private InvSubWarehouseService invSubWarehouseService;
@Resource
CodesDao codesDao;
private CodesDao codesDao;
@Resource
CodesTempDao codesTempDao;
private CodesTempDao codesTempDao;
@Resource
SystemParamConfigService systemParamConfigService;
private SystemParamConfigService systemParamConfigService;
@Resource
GennerOrderUtils gennerOrderUtils;
private GennerOrderUtils gennerOrderUtils;
@Resource
private InvProductDao invProductDao;
@Resource
@ -78,6 +76,12 @@ public class OrderServiceImpl implements OrderService {
private OrderDetailDao orderDetailDao;
@Resource
private InvSubWarehouseDao invSubWarehouseDao;
@Resource
private BussinessLocalTypeDao bussinessLocalTypeDao;
@Resource
private InvPreInProductDao invPreInProductDao;
@Resource
private InvPreInProductDetailDao invPreInProductDetailDao;
@Override
public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) {
@ -445,59 +449,114 @@ public class OrderServiceImpl implements OrderService {
orderFilterRequest.setId(id);
OrderEntity orderEntity = orderDao.findOne(orderFilterRequest);
if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) {
//查询库存详情
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOrderIdFk(id);
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
Map<String, List<InvProductDetailEntity>> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
List<InvProductEntity> invProductList = new ArrayList<>(invProductDetailMap.keySet().size());
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
} else {
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
}
List<InvProductEntity> invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest);
InvProductEntity productEntity = invProductEntities.get(0);
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
//入库,在原有库存基础上减库存
int count = productEntity.getInCount() - invProductDetailEntity.getCount();
productEntity.setInCount(count);
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
//出库,在原有库存上增加库存
int count = productEntity.getOutCount() - invProductDetailEntity.getCount();
productEntity.setOutCount(count);
}
invProductList.add(productEntity);
}
//删除单据相关数据,更新库存
try {
//删除库存详情
invProductDetailDao.deleteByOrderId(id);
//更新库存
for (InvProductEntity invProductEntity : invProductList) {
//查询库存码详情,如果库存码详情为空,则删除此库存
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
detailParams.setBatchNo(invProductEntity.getBatchNo());
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
int count = invProductDetailDao.statCount(detailParams);
if (count == 0) {
//如果库存码详情为空,则删除此库存
invProductDao.deleteById(String.valueOf(invProductEntity.getId()));
} else {
invProductDao.updateInvProduct(invProductEntity);
if (isPreInOrder(orderEntity)) {
//查询预验收库详情
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOrderIdFk(id);
List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
Map<String, List<InvProductDetailEntity>> invPreInProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
List<InvProductEntity> invPreInProductList = new ArrayList<>(invPreInProductDetailMap.keySet().size());
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
} else {
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
}
List<InvProductEntity> invPerInProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest);
InvProductEntity invProductEntity = invPerInProductEntities.get(0);
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
//入库,在原有库存基础上减库存
int count = invProductEntity.getInCount() - invProductDetailEntity.getCount();
invProductEntity.setInCount(count);
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
//出库,在原有库存上增加库存
int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount();
invProductEntity.setOutCount(count);
}
invPreInProductList.add(invProductEntity);
}
//删除库存详情
invPreInProductDetailDao.deleteByOrderId(id);
//更新库存
for (InvProductEntity invProductEntity : invPreInProductList) {
//查询库存码详情,如果库存码详情为空,则删除此库存
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
detailParams.setBatchNo(invProductEntity.getBatchNo());
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
int count = invPreInProductDetailDao.statCount(detailParams);
if (count == 0) {
//如果库存码详情为空,则删除此库存
invPreInProductDao.deleteById(String.valueOf(invProductEntity.getId()));
} else {
invProductDao.updateInvProduct(invProductEntity);
} h
}
} else {
//查询库存详情
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOrderIdFk(id);
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
Map<String, List<InvProductDetailEntity>> invProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
List<InvProductEntity> invProductList = new ArrayList<>(invProductDetailMap.keySet().size());
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode());
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
} else {
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
}
List<InvProductEntity> invProductEntities = invProductDao.filterInvProduct(filterInvProductRequest);
InvProductEntity productEntity = invProductEntities.get(0);
if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) {
//入库,在原有库存基础上减库存
int count = productEntity.getInCount() - invProductDetailEntity.getCount();
productEntity.setInCount(count);
} else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) {
//出库,在原有库存上增加库存
int count = productEntity.getOutCount() - invProductDetailEntity.getCount();
productEntity.setOutCount(count);
}
invProductList.add(productEntity);
}
//删除库存详情
invProductDetailDao.deleteByOrderId(id);
//更新库存
for (InvProductEntity invProductEntity : invProductList) {
//查询库存码详情,如果库存码详情为空,则删除此库存
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest();
detailParams.setBatchNo(invProductEntity.getBatchNo());
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
detailParams.setProductIdFk(invProductEntity.getRelIdFk());
int count = invProductDetailDao.statCount(detailParams);
if (count == 0) {
//如果库存码详情为空,则删除此库存
invProductDao.deleteById(String.valueOf(invProductEntity.getId()));
} else {
invProductDao.updateInvProduct(invProductEntity);
}
}
}
//删除码详情
codesDao.deleteByOrderId(id);
//查询业务单据
@ -553,4 +612,15 @@ public class OrderServiceImpl implements OrderService {
return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds);
}
/**
*
*
* @param orderEntity
* @return
*/
private boolean isPreInOrder(OrderEntity orderEntity) {
return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction());
}
}

@ -198,4 +198,10 @@
FROM basic_bustype_local
WHERE id = #{id}
</select>
<select id="selectPreInByOrderType" resultType="java.lang.Boolean">
select preIn from basic_bustype_local where action = (
select localAction from basic_bussiness_type where basic_bussiness_type.action = #{action}
)
</select>
</mapper>

@ -51,6 +51,9 @@
<if test="invWarehouseCode != '' and invWarehouseCode != null">
AND invWarehouseCode = #{invWarehouseCode}
</if>
<if test="orderIdFk != '' and orderIdFk != null">
AND orderIdFk = #{orderIdFk}
</if>
</where>
</select>

Loading…
Cancel
Save