1.提交单据编辑相关接口代码

2.删除码修改为减一,减到零时删除码详情,并关联删除库存等数据
master
x_z 3 years ago
parent fd244a1a7c
commit 67e16c3248

@ -9,8 +9,6 @@ import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.controller.inout.utils.DataTransUtil;
import com.glxp.api.admin.dao.business.StockOrderDao;
import com.glxp.api.admin.dao.inout.CodesDao;
import com.glxp.api.admin.dao.inout.CodesTempDao;
import com.glxp.api.admin.dao.inout.OrderDao;
import com.glxp.api.admin.dao.inventory.InvWarehouseDao;
@ -713,4 +711,20 @@ 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);
}
}

@ -3,12 +3,10 @@ package com.glxp.api.admin.controller.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.controller.business.StockOrderController;
import com.glxp.api.admin.dao.auth.AuthLicenseDao;
import com.glxp.api.admin.dao.inventory.InvWarehouseDao;
import com.glxp.api.admin.entity.auth.AuthAdmin;
@ -16,10 +14,13 @@ import com.glxp.api.admin.entity.auth.AuthLicense;
import com.glxp.api.admin.entity.basic.BasicUnitMaintainEntity;
import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import com.glxp.api.admin.entity.business.StockOrderEntity;
import com.glxp.api.admin.entity.info.CompanyEntity;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
import com.glxp.api.admin.entity.inout.*;
import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseBussinessTypeEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inout.WarehouseUserEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.exception.JsonException;
import com.glxp.api.admin.httpclient.SpsDirectClient;
@ -38,7 +39,6 @@ import com.glxp.api.admin.service.basic.UdiInfoService;
import com.glxp.api.admin.service.basic.UdiRelevanceService;
import com.glxp.api.admin.service.business.StockOrderService;
import com.glxp.api.admin.service.info.CompanyProductRelevanceService;
import com.glxp.api.admin.service.info.CompanyService;
import com.glxp.api.admin.service.info.SystemParamConfigService;
import com.glxp.api.admin.service.inout.*;
import com.glxp.api.admin.service.inventory.InvPreInProductDetailService;
@ -48,8 +48,6 @@ import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@ -59,9 +57,10 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@ -76,8 +75,6 @@ public class WareHouseController {
@Resource
private CodesTempService codesTempService;
@Resource
CompanyService companyService;
@Resource
private BussinessTypeService bussinessTypeService;
@Resource
AuthAdminService authAdminService;
@ -97,19 +94,18 @@ public class WareHouseController {
CompanyProductRelevanceService companyProductRelevanceService;
@Resource
SystemParamConfigService systemParamConfigService;
Logger logger = LoggerFactory.getLogger(StockOrderController.class);
@Resource
StockOrderService stockOrderService;
@Resource
GennerOrderUtils gennerOrderUtils;
@Resource
private UdiInfoService udiInfoService;
@Resource
InvPreInProductDetailService invPreInProductDetailService;
@Resource
SpsDirectClient spsDirectClient;
@Resource
InvWarehouseDao invWarehouseService;
@Resource
private UdiInfoService udiInfoService;
@AuthRuleAnnotation("")
@GetMapping("admin/warehouse/inout/list")
@ -1099,4 +1095,29 @@ public class WareHouseController {
return ResultVOUtils.success();
}
/**
*
*
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/warehouse/inout/replaceCodes")
public BaseResponse replaceCodes(@RequestBody CodesReplaceRequest codesReplaceRequest) {
if (StrUtil.isBlank(codesReplaceRequest.getCode()) || StrUtil.isBlank(codesReplaceRequest.getOrderId())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
UdiEntity udi = FilterUdiUtils.getUdi(codesReplaceRequest.getCode());
if (null == udi || StrUtil.isBlank(udi.getUdi())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码错误");
}
//判断udi码是否在产品信息中已维护如未维护则返回错误否则库存无法对应
UdiInfoEntity udiInfoEntity = udiInfoService.findByNameCode(udi.getUdi());
if (null == udiInfoEntity) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "产品未维护");
}
codesReplaceRequest.setUdiEntity(udiInfoEntity);
codesService.replaceCodes(codesReplaceRequest);
return ResultVOUtils.success();
}
}

@ -64,4 +64,12 @@ public interface StockOrderDao {
* @return
*/
List<String> selectWaitSubmitOrders();
/**
* 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);

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

@ -43,4 +43,21 @@ public interface OrderDetailDao {
ErpOrderEntity findById(@Param("id") String id);
boolean deleteByOrderId(@Param("id") String id);
/**
*
*
* @param filterErpOrderRequest
* @return
*/
List<ErpOrderEntity> filterErpOrder(@Param("filterErpOrderRequest") FilterErpOrderRequest filterErpOrderRequest);
/**
*
*
* @param orderId
* @return
*/
int countByOrderId(@Param("orderId") String orderId);
}

@ -19,5 +19,7 @@ public class FilterErpOrderRequest extends ListPageRequest {
private String billcode;
private String fbillflag;
List<String> orderIds;
private String goodsid;
private String batchNo;
}

@ -0,0 +1,39 @@
package com.glxp.api.admin.req.inout;
import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import lombok.Data;
/**
*
*/
@Data
public class CodesReplaceRequest {
/**
*
*/
private String code;
/**
*
*/
private String count;
/**
*
*/
private String newCode;
/**
*
*/
private Integer newCount;
/**
*
*/
private String orderId;
private UdiInfoEntity udiEntity;
}

@ -1,10 +1,8 @@
package com.glxp.api.admin.service.inout;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inout.Warehousetemp;
import com.glxp.api.admin.req.inout.CommitRequest;
import com.glxp.api.admin.req.inout.CodesReplaceRequest;
import com.glxp.api.admin.req.inout.WarehouseQueryRequest;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -42,4 +40,11 @@ public interface CodesService {
boolean updateSupId(String sup, String nameCode, String orderId);
/**
*
*
* @param codesReplaceRequest
*/
void replaceCodes(CodesReplaceRequest codesReplaceRequest);
}

@ -1,13 +1,36 @@
package com.glxp.api.admin.service.inout.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.constant.ConstantType;
import com.glxp.api.admin.dao.business.StockOrderDao;
import com.glxp.api.admin.dao.business.StockOrderDetailDao;
import com.glxp.api.admin.dao.inout.CodesDao;
import com.glxp.api.admin.dao.inout.OrderDao;
import com.glxp.api.admin.dao.inout.OrderDetailDao;
import com.glxp.api.admin.dao.inventory.InvProductDao;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.entity.business.StockOrderDetailEntity;
import com.glxp.api.admin.entity.inout.ErpOrderEntity;
import com.glxp.api.admin.entity.inout.FilterErpOrderRequest;
import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.entity.inventory.InvProductEntity;
import com.glxp.api.admin.req.business.StockOrderDetailFilterRequest;
import com.glxp.api.admin.req.inout.CodesReplaceRequest;
import com.glxp.api.admin.req.inout.WarehouseQueryRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductRequest;
import com.glxp.api.admin.service.inout.CodesService;
import com.glxp.api.admin.service.inout.OrderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -16,6 +39,20 @@ public class CodesServiceImpl implements CodesService {
@Resource
CodesDao codesDao;
@Resource
private InvProductDao invProductDao;
@Resource
private InvProductDetailDao invProductDetailDao;
@Resource
private OrderDetailDao orderDetailDao;
@Resource
private StockOrderDetailDao stockOrderDetailDao;
@Resource
private OrderDao orderDao;
@Resource
private StockOrderDao stockOrderDao;
@Resource
private OrderService orderService;
@Override
public List<WarehouseEntity> listWarehouse(WarehouseQueryRequest warehouseQueryRequest) {
@ -130,4 +167,139 @@ public class CodesServiceImpl implements CodesService {
return codesDao.updateSupId(sup, nameCode, orderId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void replaceCodes(CodesReplaceRequest codesReplaceRequest) {
OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId());
//查询所有单据
List<OrderEntity> orderList = new ArrayList<>();
orderList.add(orderEntity);
orderService.getAllOrder(orderEntity, orderList);
for (OrderEntity order : orderList) {
//查询条码
WarehouseQueryRequest warehouseQueryRequest = new WarehouseQueryRequest();
warehouseQueryRequest.setOrderId(order.getId());
warehouseQueryRequest.setCode(codesReplaceRequest.getCode());
List<WarehouseEntity> warehouseEntities = codesDao.findByOrderId(warehouseQueryRequest);
if (CollUtil.isNotEmpty(warehouseEntities)) {
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 {
//更新库存
invProductDao.updateInvProduct(invProductEntity);
}
//查询扫码单据详情
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 {
orderDetailDao.deleteByPrimiyId(String.valueOf(erpOrderEntity.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 (stockOrderDetailEntity.getReCount() > 1) {
stockOrderDetailEntity.setReCount(stockOrderDetailEntity.getReCount()- 1); //实际数量 - 1
stockOrderDetailEntity.setSweepCount(stockOrderDetailEntity.getSweepCount() -1); //扫码数量 -1
//更新业务单据详情
stockOrderDetailDao.updateById(stockOrderDetailEntity);
} else {
//删除业务单据详情
stockOrderDetailDao.deleteById(stockOrderDetailEntity.getId());
}
}
//若扫码单据详情已全部被删除,关联删除扫码单据和业务单据
int orderDetailCount = orderDetailDao.countByOrderId(order.getId());
if (orderDetailCount == 0) {
//当单据详情数量为0时删除扫码单据和业务单据
orderDao.deleteById(order.getId());
stockOrderDao.deleteByOrderIdFk(order.getId());
}
}
}
}
}
}
}

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

@ -60,6 +60,23 @@
ORDER BY id DESC
</select>
<select id="filterStockOrderDetail3" parameterType="com.glxp.api.admin.req.business.StockOrderDetailFilterRequest"
resultType="com.glxp.api.admin.entity.business.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>
<insert id="insertStockOrderDetail" keyProperty="id"
parameterType="com.glxp.api.admin.entity.business.StockOrderDetailEntity">
replace

@ -176,4 +176,10 @@
FROM io_codes
WHERE orderId = #{orderId}
</delete>
<delete id="deleteById">
delete
from io_codes
where id = #{id}
</delete>
</mapper>

@ -249,4 +249,27 @@
FROM io_order_detail
WHERE `id` = #{id}
</select>
<select id="filterErpOrder" resultType="com.glxp.api.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>
<select id="countByOrderId" resultType="int">
select count(*)
from io_order_detail
where orderIdFk = #{orderId}
</select>
</mapper>
Loading…
Cancel
Save