1.修改删除码逻辑为扣减码数量,当码数量为0时扣减库存,删除单据数据

master
x_z 3 years ago
parent 091f7e0695
commit 20e310ea13

@ -8,10 +8,8 @@ import com.github.pagehelper.PageInfo;
import com.glxp.sale.admin.annotation.AuthRuleAnnotation;
import com.glxp.sale.admin.constant.ConstantStatus;
import com.glxp.sale.admin.controller.inout.utils.DataTransUtil;
import com.glxp.sale.admin.dao.inout.CodesDao;
import com.glxp.sale.admin.dao.inout.CodesTempDao;
import com.glxp.sale.admin.dao.inout.OrderDao;
import com.glxp.sale.admin.dao.inout.StockOrderDao;
import com.glxp.sale.admin.dao.inventory.InvWarehouseDao;
import com.glxp.sale.admin.entity.auth.AuthAdmin;
import com.glxp.sale.admin.entity.basic.BussinessTypeEntity;
@ -38,7 +36,6 @@ import com.glxp.sale.common.enums.ResultEnum;
import com.glxp.sale.common.res.BaseResponse;
import com.glxp.sale.common.util.ResultVOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.regexp.RE;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@ -703,4 +700,19 @@ public class OrderController {
return ResultVOUtils.success();
}
/**
*
*
* @param id
* @return
*/
@GetMapping("/udiwms/inout/order/getOrderById")
public BaseResponse getOrderById(String id) {
if (StrUtil.isBlank(id)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
OrderEntity orderEntity = orderService.findById(id);
return ResultVOUtils.success(orderEntity);
}
}

@ -46,4 +46,11 @@ public interface CodesDao {
boolean updateSupId(@Param("supId") String supId, @Param("nameCode") String nameCode, @Param("orderId") String orderId);
boolean deleteByOrderIdAndCode(@Param("orderId") String orderId, @Param("code") String code);
/**
* ID
*
* @param id
*/
void deleteById(@Param("id") Long id);
}

@ -62,4 +62,12 @@ public interface OrderDetailDao {
* @return
*/
int countByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param filterErpOrderRequest
* @return
*/
List<ErpOrderEntity> filterErpOrder(@Param("filterErpOrderRequest") FilterErpOrderRequest filterErpOrderRequest);
}

@ -56,4 +56,12 @@ public interface StockOrderDao {
* @return
*/
boolean deleteByOrderIdFk(String orderIdFk);
/**
* ID
*
* @param orderIdFk
* @return
*/
Integer selectIdByOrderIdFk(@Param("orderIdFk") String orderIdFk);
}

@ -15,6 +15,8 @@ public interface StockOrderDetailDao {
List<StockOrderDetailResponse> filterStockOrderDetail2(StockOrderDetailFilterRequest stockOrderDetailFilterRequest);
List<StockOrderDetailEntity> filterStockOrderDetail3(StockOrderDetailFilterRequest stockOrderDetailFilterRequest);
boolean insertStockOrderDetail(StockOrderDetailEntity stockOrderDetailEntity);
boolean insertStockOrderDetails(@Param("stockOrderDetailEntities") List<StockOrderDetailEntity> stockOrderDetailEntitys);

@ -8,9 +8,7 @@ import com.glxp.sale.admin.constant.ConstantType;
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.entity.inout.FilterErpOrderRequest;
import com.glxp.sale.admin.entity.inout.OrderEntity;
import com.glxp.sale.admin.entity.inout.WarehouseEntity;
import com.glxp.sale.admin.entity.inout.*;
import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.sale.admin.entity.inventory.InvProductEntity;
import com.glxp.sale.admin.req.inout.CodesReplaceRequest;
@ -177,89 +175,123 @@ public class CodesServiceImpl implements CodesService {
warehouseQueryRequest.setCode(codesReplaceRequest.getCode());
List<WarehouseEntity> warehouseEntities = codesDao.findByOrderId(warehouseQueryRequest);
if (CollUtil.isNotEmpty(warehouseEntities)) {
for (WarehouseEntity warehouseEntity : warehouseEntities) {
//删除码详情
codesDao.deleteByOrderIdAndCode(warehouseEntity.getOrderId(), warehouseEntity.getCode());
if (order.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) {
//查询库存详情
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(codesReplaceRequest.getCode());
filterInvProductDetailRequest.setProductIdFk(warehouseEntity.getRelId());
filterInvProductDetailRequest.setOrderIdFk(order.getId());
if (StrUtil.isNotBlank(warehouseEntity.getBatchNo())) {
filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo());
WarehouseEntity warehouseEntity = warehouseEntities.get(0);
if (warehouseEntity.getCount() > 1) {
//删除一个条码
warehouseEntity.setCount(warehouseEntity.getCount() - 1);
codesDao.updateCode(warehouseEntity); //更新码详情
} else {
//如果数量扣减之后为0直接删除此条码
codesDao.deleteById(warehouseEntity.getId());
}
//库存详情扣减1
if (order.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) {
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(codesReplaceRequest.getCode());
filterInvProductDetailRequest.setProductIdFk(warehouseEntity.getRelId());
filterInvProductDetailRequest.setOrderIdFk(order.getId());
if (StrUtil.isNotBlank(warehouseEntity.getBatchNo())) {
filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo());
} else {
filterInvProductDetailRequest.setBatchNo("empty");
}
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
//库存详情不为空,单据已验收,扣减库存
InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0);
if (invProductDetailEntity.getCount() > 1) {
invProductDetailEntity.setCount(invProductDetailEntity.getCount() - 1); //更新库存
invProductDetailDao.updateInvProductDetail(invProductDetailEntity);
} else {
//库存详情扣减之后等于0删除库存详情
invProductDetailDao.deleteByOrderIdAndCode(order.getId(), warehouseEntity.getCode());
}
//查询原库存详情和新的库存详情
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
} else {
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
}
InvProductEntity invProductEntity = invProductDao.filterInvProduct(filterInvProductRequest).get(0);
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
//入库
invProductEntity.setInCount(invProductEntity.getInCount() - 1);
} else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
//出库
invProductEntity.setOutCount(invProductEntity.getOutCount() - 1);
}
//查询库存码详情,如果库存码详情为空,则删除此库存
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 {
filterInvProductDetailRequest.setBatchNo("empty");
//更新库存
invProductDao.updateInvProduct(invProductEntity);
}
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
//库存详情不为空,单据已验收,更新库存
InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0); //库存
//删除库存详情
invProductDetailDao.deleteByOrderIdAndCode(warehouseEntity.getOrderId(), codesReplaceRequest.getCode());
//查询原库存详情和新的库存详情
FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest();
filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk());
filterInvProductRequest.setSupId(invProductDetailEntity.getSupId());
filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode());
if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
//查询扫码单据详情
FilterErpOrderRequest orderDetailRequest = new FilterErpOrderRequest();
orderDetailRequest.setOrderIdFk(order.getId());
orderDetailRequest.setGoodsid(warehouseEntity.getRelId());
orderDetailRequest.setBatchNo(warehouseEntity.getBatchNo());
List<ErpOrderEntity> erpOrderEntities = orderDetailDao.filterErpOrder(orderDetailRequest);
if (CollUtil.isNotEmpty(erpOrderEntities)) {
ErpOrderEntity erpOrderEntity = erpOrderEntities.get(0);
if (erpOrderEntity.getReCount() > 1) {
erpOrderEntity.setReCount(erpOrderEntity.getReCount() - 1); //应收数量 - 1
erpOrderEntity.setCount(erpOrderEntity.getCount() - 1); //实际数量 - 1
//更新扫码单据详情
orderDetailDao.updateErpOrder(erpOrderEntity);
} else {
filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo());
}
InvProductEntity invProductEntity = invProductDao.filterInvProduct(filterInvProductRequest).get(0);
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
//出库
int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount();
invProductEntity.setOutCount(count);
} else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
//入库
int count = invProductEntity.getInCount() - invProductDetailEntity.getCount();
invProductEntity.setInCount(count);
orderDetailDao.deleteByPrimiyId(String.valueOf(erpOrderEntity.getId()));
}
}
//查询库存码详情,如果库存码详情为空,则删除此库存
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()));
//查询业务单据详情
StockOrderDetailFilterRequest stockOrderDetailFilterRequest = new StockOrderDetailFilterRequest();
stockOrderDetailFilterRequest.setProductId(warehouseEntity.getRelId());
stockOrderDetailFilterRequest.setBatchNo(warehouseEntity.getBatchNo());
//查询业务单据数据ID
Integer stockOrderId = stockOrderDao.selectIdByOrderIdFk(order.getId());
stockOrderDetailFilterRequest.setOrderIdFk(String.valueOf(stockOrderId));
List<StockOrderDetailEntity> stockOrderDetailEntities = stockOrderDetailDao.filterStockOrderDetail3(stockOrderDetailFilterRequest);
if (CollUtil.isNotEmpty(stockOrderDetailEntities)) {
StockOrderDetailEntity stockOrderDetailEntity = stockOrderDetailEntities.get(0);
if (Integer.parseInt(stockOrderDetailEntity.getReCount()) > 1) {
stockOrderDetailEntity.setReCount(String.valueOf(Integer.parseInt(stockOrderDetailEntity.getReCount()) - 1)); //实际数量 - 1
stockOrderDetailEntity.setSweepCount(String.valueOf(Integer.parseInt(stockOrderDetailEntity.getSweepCount()) - 1)); //扫码数量 -1
//更新业务单据详情
stockOrderDetailDao.updateById(stockOrderDetailEntity);
} else {
//更新库存
invProductDao.updateInvProduct(invProductEntity);
//删除业务单据详情
stockOrderDetailDao.deleteById(stockOrderDetailEntity.getId());
}
}
}
//删除单据详情
FilterErpOrderRequest deleteOrderDetailParam = new FilterErpOrderRequest();
deleteOrderDetailParam.setOrderIdFk(order.getId());
deleteOrderDetailParam.setGoodsid(warehouseEntity.getRelId());
deleteOrderDetailParam.setBatchNo(warehouseEntity.getBatchNo());
orderDetailDao.deleteOrder(deleteOrderDetailParam); //删除扫码单据详情
StockOrderDetailFilterRequest deleteStockOrderDetailParam = new StockOrderDetailFilterRequest();
deleteStockOrderDetailParam.setProductId(warehouseEntity.getRelId());
deleteStockOrderDetailParam.setBatchNo(warehouseEntity.getBatchNo());
deleteStockOrderDetailParam.setOrderIdFk(order.getId());
stockOrderDetailDao.deleteStockOrderDetail(deleteStockOrderDetailParam); //删除业务单据详情
}
int orderDetailCount = orderDetailDao.countByOrderId(order.getId());
if (orderDetailCount == 0) {
//当单据详情数量为0时删除扫码单据和业务单据
orderDao.deleteById(order.getId());
stockOrderDao.deleteByOrderIdFk(order.getId());
//若扫码单据详情已全部被删除,关联删除扫码单据和业务单据
int orderDetailCount = orderDetailDao.countByOrderId(order.getId());
if (orderDetailCount == 0) {
//当单据详情数量为0时删除扫码单据和业务单据
orderDao.deleteById(order.getId());
stockOrderDao.deleteByOrderIdFk(order.getId());
}
}
}
}
}
}
}

@ -183,4 +183,10 @@
and code = #{code}
</delete>
<delete id="deleteById">
delete
from io_codes
where id = #{id}
</delete>
</mapper>

@ -273,5 +273,21 @@
</where>
</delete>
<select id="filterErpOrder" resultType="com.glxp.sale.admin.entity.inout.ErpOrderEntity">
select *
from io_order_detail
<where>
<if test="filterErpOrderRequest.orderIdFk != null">
AND orderIdFk = #{filterErpOrderRequest.orderIdFk}
</if>
<if test="filterErpOrderRequest.goodsid != null">
AND goodsid = #{filterErpOrderRequest.goodsid}
</if>
<if test="filterErpOrderRequest.batchNo != null">
AND batchNo = #{filterErpOrderRequest.batchNo}
</if>
</where>
</select>
</mapper>

@ -291,4 +291,10 @@
where orderIdFk = #{orderIdFk}
</delete>
<select id="selectIdByOrderIdFk" resultType="java.lang.Integer">
select id
from stock_order
where orderIdFk = #{orderIdFk}
</select>
</mapper>

@ -129,6 +129,7 @@
<if test="sweepCount != null">sweepCount=#{sweepCount},</if>
<if test="count != null">count=#{count},</if>
<if test="reCount != null">reCount=#{reCount},</if>
<if test="sweepCount != null">sweepCount=#{sweepCount},</if>
<if test="price != null">price=#{price},</if>
<if test="secSalesListNo != null ">secSalesListNo=#{secSalesListNo},</if>
<if test="firstSalesInvNo != null">firstSalesInvNo=#{firstSalesInvNo},</if>
@ -174,4 +175,21 @@
</where>
</delete>
<select id="filterStockOrderDetail3" parameterType="com.glxp.sale.admin.req.inout.StockOrderDetailFilterRequest"
resultType="com.glxp.sale.admin.entity.inout.StockOrderDetailEntity">
select *
from stock_order_detail
<where>
<if test="productId != null and productId != ''">
AND productId = #{productId}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save