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

fengcang
x_z 3 years ago
parent f2c8a627c2
commit 01decc48ce

@ -38,4 +38,11 @@ public interface BussinessLocalTypeDao {
boolean deleteById(@Param("id") String id); boolean deleteById(@Param("id") String id);
List<BussinessLocalTypeEntity> filterFoeThirdSys(); List<BussinessLocalTypeEntity> filterFoeThirdSys();
/**
*
*
* @param action
*/
boolean selectPreInByOrderType(String action);
} }

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

@ -9,6 +9,7 @@ import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.constant.ConstantStatus; import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.constant.ConstantType; import com.glxp.api.admin.constant.ConstantType;
import com.glxp.api.admin.dao.basic.BasicThirdSysBusApiDao; import com.glxp.api.admin.dao.basic.BasicThirdSysBusApiDao;
import com.glxp.api.admin.dao.basic.BussinessLocalTypeDao;
import com.glxp.api.admin.dao.basic.BussinessTypeDao; import com.glxp.api.admin.dao.basic.BussinessTypeDao;
import com.glxp.api.admin.dao.business.StockOrderDao; import com.glxp.api.admin.dao.business.StockOrderDao;
import com.glxp.api.admin.dao.business.StockOrderDetailDao; import com.glxp.api.admin.dao.business.StockOrderDetailDao;
@ -16,10 +17,7 @@ import com.glxp.api.admin.dao.inout.CodesDao;
import com.glxp.api.admin.dao.inout.CodesTempDao; import com.glxp.api.admin.dao.inout.CodesTempDao;
import com.glxp.api.admin.dao.inout.OrderDao; import com.glxp.api.admin.dao.inout.OrderDao;
import com.glxp.api.admin.dao.inout.OrderDetailDao; import com.glxp.api.admin.dao.inout.OrderDetailDao;
import com.glxp.api.admin.dao.inventory.InvProductDao; import com.glxp.api.admin.dao.inventory.*;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.dao.inventory.InvSubWarehouseDao;
import com.glxp.api.admin.dao.inventory.InvWarehouseDao;
import com.glxp.api.admin.entity.basic.BasicThirdSysBusApiEntity; import com.glxp.api.admin.entity.basic.BasicThirdSysBusApiEntity;
import com.glxp.api.admin.entity.basic.BussinessTypeEntity; import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.entity.business.StockOrderEntity; import com.glxp.api.admin.entity.business.StockOrderEntity;
@ -65,15 +63,15 @@ public class OrderServiceImpl implements OrderService {
@Resource @Resource
InvWarehouseDao invWarehouseDao; InvWarehouseDao invWarehouseDao;
@Resource @Resource
InvSubWarehouseService invSubWarehouseService; private InvSubWarehouseService invSubWarehouseService;
@Resource @Resource
CodesDao codesDao; private CodesDao codesDao;
@Resource @Resource
CodesTempDao codesTempDao; private CodesTempDao codesTempDao;
@Resource @Resource
SystemParamConfigService systemParamConfigService; private SystemParamConfigService systemParamConfigService;
@Resource @Resource
GennerOrderUtils gennerOrderUtils; private GennerOrderUtils gennerOrderUtils;
@Resource @Resource
private BasicThirdSysBusApiDao basicThirdSysBusApiDao; private BasicThirdSysBusApiDao basicThirdSysBusApiDao;
@Resource @Resource
@ -86,6 +84,12 @@ public class OrderServiceImpl implements OrderService {
private OrderDetailDao orderDetailDao; private OrderDetailDao orderDetailDao;
@Resource @Resource
private InvSubWarehouseDao invSubWarehouseDao; private InvSubWarehouseDao invSubWarehouseDao;
@Resource
private BussinessLocalTypeDao bussinessLocalTypeDao;
@Resource
private InvPreInProductDao invPreInProductDao;
@Resource
private InvPreInProductDetailDao invPreInProductDetailDao;
@Override @Override
public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) { public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) {
@ -275,7 +279,7 @@ public class OrderServiceImpl implements OrderService {
supplementOrder.setInvWarehouseCode(order.getFromSubInvCode()); supplementOrder.setInvWarehouseCode(order.getFromSubInvCode());
} else { } else {
List<InvSubWarehouseEntity> invSubWarehouseEntities = invSubWarehouseService.findByParentId(supplementOrder.getLocStorageCode()); List<InvSubWarehouseEntity> invSubWarehouseEntities = invSubWarehouseService.findByParentId(supplementOrder.getLocStorageCode());
if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) { if (CollUtil.isNotEmpty(invSubWarehouseEntities) && invSubWarehouseEntities.size() > 0) {
supplementOrder.setInvWarehouseCode(invSubWarehouseEntities.get(0).getCode()); supplementOrder.setInvWarehouseCode(invSubWarehouseEntities.get(0).getCode());
} }
} }
@ -487,59 +491,115 @@ public class OrderServiceImpl implements OrderService {
orderFilterRequest.setId(id); orderFilterRequest.setId(id);
OrderEntity orderEntity = orderDao.findOne(orderFilterRequest); OrderEntity orderEntity = orderDao.findOne(orderFilterRequest);
if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { 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 { try {
//删除库存详情 //判断单据是否是预验收单据,如果是预验收单据,则删除预验收库库存
invProductDetailDao.deleteByOrderId(id); if (isPreInOrder(orderEntity)) {
//更新库存 //查询预验收库详情
for (InvProductEntity invProductEntity : invProductList) { FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
//查询库存码详情,如果库存码详情为空,则删除此库存 filterInvProductDetailRequest.setOrderIdFk(id);
FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
detailParams.setBatchNo(invProductEntity.getBatchNo()); Map<String, List<InvProductDetailEntity>> invPreInProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk));
detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode()));
detailParams.setProductIdFk(invProductEntity.getRelIdFk()); List<InvProductEntity> invPreInProductList = new ArrayList<>(invPreInProductDetailMap.keySet().size());
int count = invProductDetailDao.statCount(detailParams);
if (count == 0) { for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
//如果库存码详情为空,则删除此库存 FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
invProductDao.deleteById(String.valueOf(invProductEntity.getId())); filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
} else { filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
invProductDao.updateInvProduct(invProductEntity); 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);
}
}
} 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); codesDao.deleteByOrderId(id);
//查询业务单据 //查询业务单据
@ -590,6 +650,16 @@ public class OrderServiceImpl implements OrderService {
} }
} }
/**
*
*
* @param orderEntity
* @return
*/
private boolean isPreInOrder(OrderEntity orderEntity) {
return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction());
}
@Override @Override
public boolean updateOrderInfo(String actDate, String auditTime, List<String> orderIds) { public boolean updateOrderInfo(String actDate, String auditTime, List<String> orderIds) {
return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds); return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds);

@ -235,4 +235,10 @@
from basic_third_sys_bus_api from basic_third_sys_bus_api
); );
</select> </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> </mapper>

@ -51,6 +51,9 @@
<if test="invWarehouseCode != '' and invWarehouseCode != null"> <if test="invWarehouseCode != '' and invWarehouseCode != null">
AND invWarehouseCode = #{invWarehouseCode} AND invWarehouseCode = #{invWarehouseCode}
</if> </if>
<if test="orderIdFk != '' and orderIdFk != null">
AND orderIdFk = #{orderIdFk}
</if>
</where> </where>
</select> </select>
@ -225,6 +228,11 @@
</where> </where>
</delete> </delete>
<delete id="deleteByOrderId">
delete from inv_prein_product_detail
where orderIdFk = #{orderIdFk}
</delete>
<update id="updateInvProductDetail" parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity"> <update id="updateInvProductDetail" parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
UPDATE inv_prein_product_detail UPDATE inv_prein_product_detail
<trim prefix="set" suffixOverrides=","> <trim prefix="set" suffixOverrides=",">

Loading…
Cancel
Save