diff --git a/microservices/order-api/src/main/java/cn/qihangerp/api/order/OrderItemSpecIdUpdateBo.java b/microservices/order-api/src/main/java/cn/qihangerp/api/order/OrderItemSpecIdUpdateBo.java new file mode 100644 index 00000000..f7c558bc --- /dev/null +++ b/microservices/order-api/src/main/java/cn/qihangerp/api/order/OrderItemSpecIdUpdateBo.java @@ -0,0 +1,9 @@ +package cn.qihangerp.api.order; + +import lombok.Data; + +@Data +public class OrderItemSpecIdUpdateBo { + private Long orderItemId; + private Long erpGoodsSpecId; +} diff --git a/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderItemController.java b/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderItemController.java index 847780ea..9e0d7ca0 100644 --- a/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderItemController.java +++ b/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderItemController.java @@ -2,6 +2,8 @@ package cn.qihangerp.api.order.controller; +import cn.qihangerp.api.order.OrderItemSpecIdUpdateBo; +import cn.qihangerp.common.AjaxResult; import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.TableDataInfo; import cn.qihangerp.module.order.domain.bo.OrderItemListBo; @@ -9,9 +11,7 @@ import cn.qihangerp.module.order.service.OOrderItemService; import cn.qihangerp.module.order.service.OOrderService; import cn.qihangerp.security.common.BaseController; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 店铺订单Controller @@ -36,7 +36,23 @@ public class OrderItemController extends BaseController var pageList = itemService.selectPageVo(pageQuery,bo); return getDataTable(pageList); } + /** + * 修改订单明细specId + * @param bo + * @return + */ + @PostMapping("/order_item_sku_id_update") + public AjaxResult orderItemSpecIdUpdate(@RequestBody OrderItemSpecIdUpdateBo bo) + { + if(bo.getOrderItemId()==null || bo.getOrderItemId() ==0) return AjaxResult.error("参数错误:orderItemId为空"); + if(bo.getErpGoodsSpecId()==null || bo.getErpGoodsSpecId() ==0) return AjaxResult.error("参数错误:ErpGoodsSpecId为空"); + var result = itemService.updateErpSkuId(bo.getOrderItemId(),bo.getErpGoodsSpecId()); + if (result.getCode() == 0) { + return AjaxResult.success(); + } else return AjaxResult.error(result.getMsg()); + + } // /** // * 更新erp sku id // * @param orderItem diff --git a/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderShipController.java b/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderShipController.java index 83ae42ef..1efbe0be 100644 --- a/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderShipController.java +++ b/microservices/order-api/src/main/java/cn/qihangerp/api/order/controller/OrderShipController.java @@ -1,9 +1,10 @@ package cn.qihangerp.api.order.controller; - +import cn.qihangerp.common.AjaxResult; import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.TableDataInfo; import cn.qihangerp.module.order.domain.bo.ShipStockUpBo; +import cn.qihangerp.module.order.domain.bo.ShipStockUpCompleteBo; import cn.qihangerp.module.order.service.OOrderShipListItemService; import cn.qihangerp.module.order.service.OOrderShipListService; import cn.qihangerp.security.common.BaseController; @@ -52,27 +53,27 @@ public class OrderShipController extends BaseController { return getDataTable(pageList); } -// @PostMapping("/stock_up_complete") -// public AjaxResult stock_up_complete(@RequestBody ShipStockUpCompleteBo bo) -// { -// int result = shipStockUpService.stockUpComplete(bo); -// if(result == -1) return AjaxResult.error("参数错误:orderItemIds为空"); -// if(result == -2) return AjaxResult.error("参数错误:没有要添加的"); -// else if(result == -1001) return AjaxResult.error("存在错误的orderItemId:状态不对不能生成出库单"); -// else if(result == -1002) return AjaxResult.error("存在错误的订单数据:名单明细中没有skuId请修改!"); -// //wmsStockOutEntryService.insertWmsStockOutEntry(wmsStockOutEntry) -// return toAjax(1); -// } -// -// @PostMapping("/stock_up_complete_by_order") -// public AjaxResult stock_up_completeByOrder(@RequestBody ShipStockUpCompleteBo bo) -// { -// int result = shipStockUpService.stockUpCompleteByOrder(bo); -// if(result == -1) return AjaxResult.error("参数错误:orderItemIds为空"); -// if(result == -2) return AjaxResult.error("参数错误:没有要添加的"); -// else if(result == -1001) return AjaxResult.error("存在错误的orderItemId:状态不对不能生成出库单"); -// else if(result == -1002) return AjaxResult.error("存在错误的订单数据:名单明细中没有skuId请修改!"); -// //wmsStockOutEntryService.insertWmsStockOutEntry(wmsStockOutEntry) -// return toAjax(1); -// } + @PostMapping("/stock_up_complete") + public AjaxResult stock_up_complete(@RequestBody ShipStockUpCompleteBo bo) + { + int result = shipStockUpService.stockUpComplete(bo); + if(result == -1) return AjaxResult.error("参数错误:orderItemIds为空"); + if(result == -2) return AjaxResult.error("参数错误:没有要添加的"); + else if(result == -1001) return AjaxResult.error("存在错误的orderItemId:状态不对不能生成出库单"); + else if(result == -1002) return AjaxResult.error("存在错误的订单数据:名单明细中没有skuId请修改!"); + //wmsStockOutEntryService.insertWmsStockOutEntry(wmsStockOutEntry) + return toAjax(1); + } + + @PostMapping("/stock_up_complete_by_order") + public AjaxResult stock_up_completeByOrder(@RequestBody ShipStockUpCompleteBo bo) + { + int result = shipStockUpService.stockUpCompleteByOrder(bo); + if(result == -1) return AjaxResult.error("参数错误:orderItemIds为空"); + if(result == -2) return AjaxResult.error("参数错误:没有要添加的"); + else if(result == -1001) return AjaxResult.error("存在错误的orderItemId:状态不对不能生成出库单"); + else if(result == -1002) return AjaxResult.error("存在错误的订单数据:名单明细中没有skuId请修改!"); + //wmsStockOutEntryService.insertWmsStockOutEntry(wmsStockOutEntry) + return toAjax(1); + } } diff --git a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderItemService.java b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderItemService.java index 67aa6004..2fb0fc67 100644 --- a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderItemService.java +++ b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderItemService.java @@ -23,7 +23,7 @@ public interface OOrderItemService extends IService { PageResult selectPageVo(PageQuery pageQuery, OrderItemListBo bo); PageResult queryPageList(OOrderItem bo, PageQuery pageQuery); - ResultVo updateErpSkuId(String id,Long erpSkuId); + ResultVo updateErpSkuId(Long orderItemId,Long erpSkuId); List getOrderItemListByOrderId(Long orderId); List selectTopSku(String startDate, String endDate); diff --git a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderShipListService.java b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderShipListService.java index 7f944e6c..df7f58a9 100644 --- a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderShipListService.java +++ b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/OOrderShipListService.java @@ -4,6 +4,7 @@ import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageResult; import cn.qihangerp.module.order.domain.OOrderShipList; import cn.qihangerp.module.order.domain.bo.ShipStockUpBo; +import cn.qihangerp.module.order.domain.bo.ShipStockUpCompleteBo; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -13,4 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface OOrderShipListService extends IService { PageResult querySupplierPageList(ShipStockUpBo bo, PageQuery pageQuery); + int stockUpCompleteByOrder(ShipStockUpCompleteBo bo); + /** + * 备货完成 + * @param bo + * @return + */ + int stockUpComplete(ShipStockUpCompleteBo bo); } diff --git a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderItemServiceImpl.java b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderItemServiceImpl.java index 89ab6c1e..f1ff90ec 100644 --- a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderItemServiceImpl.java +++ b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderItemServiceImpl.java @@ -1,7 +1,9 @@ package cn.qihangerp.module.order.service.impl; +import cn.qihangerp.model.entity.OGoodsSku; import cn.qihangerp.model.entity.OOrderItem; +import cn.qihangerp.module.goods.mapper.OGoodsSkuMapper; import cn.qihangerp.module.order.domain.bo.OrderItemListBo; import cn.qihangerp.model.vo.OrderItemListVo; import cn.qihangerp.module.order.domain.vo.SalesTopSkuVo; @@ -33,6 +35,8 @@ import java.util.regex.Pattern; public class OOrderItemServiceImpl extends ServiceImpl implements OOrderItemService { private final OOrderItemMapper mapper; + private final OGoodsSkuMapper goodsSkuMapper; + private final String DATE_PATTERN = "^(?:(?:(?:\\d{4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\\d|2[0-8]))|(?:(?:(?:\\d{2}(?:0[48]|[2468][048]|[13579][26])|(?:(?:0[48]|[2468][048]|[13579][26])00))-0?2-29))$)|(?:(?:(?:\\d{4}-(?:0?[13578]|1[02]))-(?:0?[1-9]|[12]\\d|30))$)|(?:(?:(?:\\d{4}-0?[13-9]|1[0-2])-(?:0?[1-9]|[1-2]\\d|30))$)|(?:(?:(?:\\d{2}(?:0[48]|[13579][26]|[2468][048])|(?:(?:0[48]|[13579][26]|[2468][048])00))-0?2-29))$)$"; private final Pattern DATE_FORMAT = Pattern.compile(DATE_PATTERN); @@ -73,9 +77,18 @@ public class OOrderItemServiceImpl extends ServiceImpl updateErpSkuId(String id, Long erpSkuId) { + public ResultVo updateErpSkuId(Long orderItemId, Long erpSkuId) { + OOrderItem oOrderItem = mapper.selectById(orderItemId); + if(oOrderItem==null){ + return ResultVo.error("找不到数据"); + }else if(oOrderItem.getShipStatus()!=0) return ResultVo.error("发货之后的订单item不允许修改"); + + OGoodsSku oGoodsSku = goodsSkuMapper.selectById(erpSkuId); + if(oGoodsSku==null){ + return ResultVo.error("找不到商品Sku数据"); + } OOrderItem update = new OOrderItem(); - update.setId(id); + update.setId(orderItemId.toString()); update.setGoodsSkuId(erpSkuId); update.setUpdateBy("手动修改ERP SKU ID"); update.setUpdateTime(new Date()); diff --git a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderShipListServiceImpl.java b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderShipListServiceImpl.java index e935a07e..1bddf33e 100644 --- a/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderShipListServiceImpl.java +++ b/serviceImpl/order/src/main/java/cn/qihangerp/module/order/service/impl/OOrderShipListServiceImpl.java @@ -2,24 +2,34 @@ package cn.qihangerp.module.order.service.impl; import cn.qihangerp.common.PageQuery; import cn.qihangerp.common.PageResult; +import cn.qihangerp.module.order.domain.OOrderShipListItem; import cn.qihangerp.module.order.domain.bo.ShipStockUpBo; +import cn.qihangerp.module.order.domain.bo.ShipStockUpCompleteBo; +import cn.qihangerp.module.order.mapper.OOrderShipListItemMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.qihangerp.module.order.domain.OOrderShipList; import cn.qihangerp.module.order.service.OOrderShipListService; import cn.qihangerp.module.order.mapper.OOrderShipListMapper; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import java.util.Date; +import java.util.List; + /** * @author qilip * @description 针对表【o_order_ship_list(发货-备货表(取号发货加入备货清单、分配供应商发货加入备货清单))】的数据库操作Service实现 * @createDate 2025-05-24 16:03:35 */ +@AllArgsConstructor @Service public class OOrderShipListServiceImpl extends ServiceImpl implements OOrderShipListService{ + private final OOrderShipListItemMapper shipListItemMapper; @Override public PageResult querySupplierPageList(ShipStockUpBo bo, PageQuery pageQuery) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() @@ -32,6 +42,89 @@ public class OOrderShipListServiceImpl extends ServiceImpl oOrderShipLists = this.baseMapper.selectList(new LambdaQueryWrapper().eq(OOrderShipList::getOrderNum, orderNum)); + if(oOrderShipLists == null || oOrderShipLists.size() == 0) continue; + + // 更新订单 + OOrderShipList update = new OOrderShipList(); + update.setId(oOrderShipLists.get(0).getId()); + update.setStatus(2); + update.setUpdateBy("备货完成"); + update.setUpdateTime(new Date()); + this.baseMapper.updateById(update); + + List upList = shipListItemMapper.selectList(new LambdaQueryWrapper().eq(OOrderShipListItem::getListId,oOrderShipLists.get(0).getId())); + if (upList != null) { + for(OOrderShipListItem up : upList) { + if (up.getStatus() == 0 || up.getStatus() == 1) { + OOrderShipListItem updateItem = new OOrderShipListItem(); + updateItem.setId(up.getId()); + updateItem.setStatus(2);//备货完成 + updateItem.setUpdateBy("备货完成"); + updateItem.setUpdateTime(new Date()); + shipListItemMapper.updateById(updateItem); + } + } + } + } + + return 1; + } + + /** + * 备货完成 + * @param bo + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int stockUpComplete(ShipStockUpCompleteBo bo) { + + if(bo.getIds() == null || bo.getIds().length == 0) return -1; + + int total=0; + // 循环判断状态 + for (Long id:bo.getIds()) { + OOrderShipListItem up = shipListItemMapper.selectById(id); + if (up != null) { + if (up.getStatus() == 0 || up.getStatus() == 1) { + OOrderShipListItem update = new OOrderShipListItem(); + update.setId(id); + update.setStatus(2);//备货完成 + update.setUpdateBy("备货完成"); + update.setUpdateTime(new Date()); + shipListItemMapper.updateById(update); + } + List oOrderShipListItems = shipListItemMapper.selectList(new LambdaQueryWrapper().eq(OOrderShipListItem::getListId, up.getListId()).eq(OOrderShipListItem::getStatus, 0)); + if(oOrderShipListItems == null || oOrderShipListItems.size() == 0) { + // 订单备货全部完成,更新订单状态 + OOrderShipList listUpdate = new OOrderShipList(); + listUpdate.setId(up.getListId()); + listUpdate.setStatus(2); + listUpdate.setUpdateBy("备货完成"); + listUpdate.setUpdateTime(new Date()); + this.baseMapper.updateById(listUpdate); + } + } + } + + return 1; + } } diff --git a/vue/package.json b/vue/package.json index 8835324c..0fc97aec 100644 --- a/vue/package.json +++ b/vue/package.json @@ -58,6 +58,7 @@ "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", "vue-meta": "2.4.0", + "vue-print-nb": "^1.7.5", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0" diff --git a/vue/src/api/order/order.js b/vue/src/api/order/order.js index 2a7d4336..4151daf3 100644 --- a/vue/src/api/order/order.js +++ b/vue/src/api/order/order.js @@ -87,3 +87,11 @@ export function manualShipmentOrder(data) { data: data }) } +//修改订单item skuId +export function orderItemSpecIdUpdate(data) { + return request({ + url: '/api/oms-api/order/order_item_sku_id_update', + method: 'post', + data: data + }) +} diff --git a/vue/src/api/shipping/shipping.js b/vue/src/api/shipping/shipping.js index 4d57a57a..aa2e7f16 100644 --- a/vue/src/api/shipping/shipping.js +++ b/vue/src/api/shipping/shipping.js @@ -38,13 +38,7 @@ export function shipStockupCompleteByOrder(data) { }) } -export function orderItemSpecIdUpdate(data) { - return request({ - url: '/shipping/order_item_spec_id_update', - method: 'post', - data: data - }) -} + // 生成出库单(备货清单生成出库单) export function generateStockOutEntry(data) { diff --git a/vue/src/main.js b/vue/src/main.js index e9c3abd4..cb32fae3 100644 --- a/vue/src/main.js +++ b/vue/src/main.js @@ -41,6 +41,8 @@ import DictData from '@/components/DictData' import Avue from '@smallwei/avue'; import '@smallwei/avue/lib/index.css'; +import Print from 'vue-print-nb' +Vue.use(Print) // 全局方法挂载 Vue.prototype.getDicts = getDicts Vue.prototype.getConfigKey = getConfigKey diff --git a/vue/src/views/shipping/stockup/index.vue b/vue/src/views/shipping/stockup/index.vue index e28dfb45..f6a28a52 100644 --- a/vue/src/views/shipping/stockup/index.vue +++ b/vue/src/views/shipping/stockup/index.vue @@ -1,10 +1,10 @@