Переглянути джерело

fix:重构新增生产订单,使用自动映射实现字段赋值

请勿打扰 6 місяців тому
батько
коміт
d2f74aba8a

+ 71 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/mapper/BulkOrderMapper.java

@@ -0,0 +1,71 @@
+package org.dromara.bulk.mapper;
+
+import org.dromara.bulk.domain.bo.OrderListBo;
+import org.dromara.bulk.domain.BulkOrderList;
+import org.dromara.bulk.domain.bo.NewBulkOrderBo;
+import org.dromara.bulk.domain.UserOrder;
+import org.dromara.bulk.domain.UserOrderTemplate;
+import org.dromara.commodityManagement.domain.bo.TemplateBo;
+import org.dromara.productionManagement.domain.ProductionPlan;
+import org.mapstruct.Context;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+
+
+import java.util.List;
+
+@Mapper(componentModel = "spring")
+public interface BulkOrderMapper {
+
+    // BulkOrderList映射
+    @Mapping(target = "sysNo", ignore = true)
+    @Mapping(target = "scNo", ignore = true)
+    @Mapping(target = "goodsId", ignore = true)
+    @Mapping(target = "goodsCode", constant = "SP001")
+    @Mapping(target = "goodsName", constant = "图片下单")
+    @Mapping(target = "unitId", constant = "5")
+    @Mapping(target = "defaultUnit", constant = "5")
+    @Mapping(target = "goodsTypeExtend1Id", source = "daHuoNumberName")
+    BulkOrderList toBulkOrderList(OrderListBo source);
+
+    // ProductionPlan映射
+    @Mapping(target = "sysNo", source = "sysNo")
+    @Mapping(target = "purchaseCode", source = "purchaseCode")
+    @Mapping(target = "orderNum", source = "orderNumber")
+    @Mapping(target = "userId", source = "newBulkOrderBo.userId")
+    @Mapping(target = "isBurnFlowers", source = "orderList.isBurnFlowers")
+    @Mapping(target = "isQuickReturn", source = "orderList.isQuickReturn")
+    @Mapping(target = "isToVoid", source = "orderList.isToVoid")
+    @Mapping(target = "isMulticolor", source = "orderList.isMulticolor")
+    @Mapping(target = "isFirstOrder", source = "orderList.isFirstOrder")
+    @Mapping(target = "isUrgent", source = "orderList.isUrgent")
+    @Mapping(target = "isBuhuo", source = "orderList.isBuhuo")
+    @Mapping(target = "isSys", source = "orderList.isSys")
+    ProductionPlan toProductionPlan(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList,
+                                    String sysNo, String purchaseCode, String orderNumber);
+
+    // UserOrder映射
+    @Mapping(target = "userId", source = "newBulkOrderBo.userId")
+    @Mapping(target = "name", source = "newBulkOrderBo.userName")
+    @Mapping(target = "phone", source = "newBulkOrderBo.userPhone")
+    @Mapping(target = "address", source = "orderList.receivingAddress")
+    @Mapping(target = "orderNumber", source = "orderNumber")
+    @Mapping(target = "remark", source = "remark")
+    UserOrder toUserOrder(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList,
+                          String orderNumber, String remark);
+
+    // UserOrderTemplate列表映射
+    @Mapping(target = "userId", source = "newBulkOrderBo.userId")
+    @Mapping(target = "orderId", source = "orderId")
+    @Mapping(target = "planId", source = "planId")
+    @Mapping(target = "itemId", source = "orderList.daHuoNumberId")
+    UserOrderTemplate toUserOrderTemplate(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList,
+                                          Long orderId, Long planId, TemplateBo templateBo);
+
+    // 集合映射方法
+    List<UserOrderTemplate> toTemplateList(@Context NewBulkOrderBo newBulkOrderBo,
+                                           @Context OrderListBo orderList,
+                                           @Context Long orderId,
+                                           @Context Long planId,
+                                           List<TemplateBo> templateList);
+}

+ 7 - 0
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/BulkOrderManagementService.java

@@ -1,7 +1,14 @@
 package org.dromara.bulk.service;
 
+import org.dromara.bulk.domain.bo.BulkOrderListBo;
 import org.dromara.bulk.domain.bo.NewBulkOrderBo;
+import org.dromara.bulk.domain.vo.BulkOrderListVo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 
 public interface BulkOrderManagementService {
+
+//    TableDataInfo<BulkOrderListVo> selectPageVoList(BulkOrderListBo bulkOrderListBo, PageQuery pageQuery);
+
     int insertBulkOrder(NewBulkOrderBo newBulkOrderBo);
 }

+ 43 - 145
ruoyi-modules/ruoyi-bulkOrder/src/main/java/org/dromara/bulk/service/impl/BulkOrderManagementServiceImpl.java

@@ -1,17 +1,23 @@
 package org.dromara.bulk.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.bulk.domain.BulkOrderList;
 import org.dromara.bulk.domain.UserOrder;
 import org.dromara.bulk.domain.UserOrderTemplate;
+import org.dromara.bulk.domain.bo.BulkOrderListBo;
 import org.dromara.bulk.domain.bo.NewBulkOrderBo;
 import org.dromara.bulk.domain.bo.OrderListBo;
+import org.dromara.bulk.domain.vo.BulkOrderListVo;
 import org.dromara.bulk.mapper.BulkOrderListMapper;
+import org.dromara.bulk.mapper.BulkOrderMapper;
 import org.dromara.bulk.mapper.UserOrderMapper;
 import org.dromara.bulk.mapper.UserOrderTemplateMapper;
 import org.dromara.bulk.service.BulkOrderManagementService;
 import org.dromara.commodityManagement.domain.bo.TemplateBo;
 import org.dromara.common.core.utils.OrderNumberGenerator;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.productionManagement.domain.ProductionPlan;
 import org.dromara.productionManagement.mapper.ProductionPlanMapper;
 import org.springframework.stereotype.Service;
@@ -31,9 +37,11 @@ public class BulkOrderManagementServiceImpl implements BulkOrderManagementServic
     private final BulkOrderListMapper bulkOrderListMapper;
     private final UserOrderMapper userOrderMapper;
     private final UserOrderTemplateMapper userOrderTemplateMapper;
+    private final BulkOrderMapper bulkOrderMapper;
 
     /**
      * 新增生产订单
+     *
      * @param newBulkOrderBo 生产订单的BO对象
      * @return 添加结果
      */
@@ -42,26 +50,50 @@ public class BulkOrderManagementServiceImpl implements BulkOrderManagementServic
     public int insertBulkOrder(NewBulkOrderBo newBulkOrderBo) {
         try {
             OrderNumberGenerator orderNumberGenerator = OrderNumberGenerator.getInstance();
-            for (OrderListBo orderList : newBulkOrderBo.getOrderLists()){
-                //生成各种单号
+            for (OrderListBo orderList : newBulkOrderBo.getOrderLists()) {
+                // 生成单号
                 String sysNo = orderNumberGenerator.generateOrderNumber("SYS");
                 String purchaseCode = orderNumberGenerator.generateOrderNumber("SC");
                 String orderNumber = orderNumberGenerator.generateOrderNumber("DH");
 
-                bulkOrderListMapper.insert(initBulkOrderList(orderList, sysNo, purchaseCode));
+                // 使用Mapper转换
+                BulkOrderList bulkOrderList = bulkOrderMapper.toBulkOrderList(orderList);
+                bulkOrderList.setSysNo(sysNo);
+                bulkOrderList.setScNo(purchaseCode);
+                bulkOrderList.setGoodsId(9L); // 保留必要的手动设置
+                bulkOrderListMapper.insert(bulkOrderList);
 
-                ProductionPlan productionPlan = initProductionPlan(newBulkOrderBo, orderList, sysNo, purchaseCode, orderNumber);
+                // 生产计划映射
+                ProductionPlan productionPlan = bulkOrderMapper.toProductionPlan(
+                    newBulkOrderBo,
+                    orderList,
+                    sysNo,
+                    purchaseCode,
+                    orderNumber
+                );
+                productionPlan.setCreateTime(newBulkOrderBo.getCreateTime());
                 productionPlanMapper.insert(productionPlan);
 
-                UserOrder userOrder = initUserOrder(newBulkOrderBo, orderList, orderNumber, newBulkOrderBo.getRemark());
+                // 用户订单映射
+                UserOrder userOrder = bulkOrderMapper.toUserOrder(
+                    newBulkOrderBo,
+                    orderList,
+                    orderNumber,
+                    newBulkOrderBo.getRemark()
+                );
+                userOrder.setCreateTime(newBulkOrderBo.getCreateTime());
                 userOrderMapper.insert(userOrder);
 
-                //获取订单id和生产计划id
-                Long orderId = productionPlan.getId();
-                Long planId = userOrder.getId();
-
-                if (null != orderList.getTemplateList()){
-                    userOrderTemplateMapper.insert(initUserOrderTemplate(newBulkOrderBo, orderList, orderId, planId));
+                // 处理模板
+                if (orderList.getTemplateList() != null) {
+                    List<UserOrderTemplate> templates = bulkOrderMapper.toTemplateList(
+                        newBulkOrderBo,
+                        orderList,
+                        productionPlan.getId(),
+                        userOrder.getId(),
+                        orderList.getTemplateList()
+                    );
+                    userOrderTemplateMapper.insert(templates); // 需要实现批量插入
                 }
             }
             return 1;
@@ -69,138 +101,4 @@ public class BulkOrderManagementServiceImpl implements BulkOrderManagementServic
             return 0;
         }
     }
-
-    /**
-     * 初始化大货订单列表BO对象
-     * @param orderList 订单列表
-     * @param sysNo 系统单号
-     * @param purchaseCode 生产单号
-     * @return 构建完毕的BO对象
-     */
-    private BulkOrderList initBulkOrderList(OrderListBo orderList, String sysNo, String purchaseCode) {
-        BulkOrderList bulkOrderList = new BulkOrderList();
-        //设置系统单号
-        bulkOrderList.setSysNo(sysNo);
-        //设置生产单号
-        bulkOrderList.setScNo(purchaseCode);
-        //设置商品ID
-        bulkOrderList.setGoodsId(9L);
-        //设置商品编号
-        bulkOrderList.setGoodsCode("SP001");
-        //设置商品名称
-        bulkOrderList.setGoodsName("图片下单");
-        //设置单位ID
-        bulkOrderList.setUnitId(5);
-        //设置默认单位ID
-        bulkOrderList.setDefaultUnit(5);
-        //设置大货编号
-        bulkOrderList.setGoodsTypeExtend1Id(orderList.getDaHuoNumberName());
-        //设置成衣厂
-        bulkOrderList.setGarmentFactory(orderList.getGarmentFactory());
-        //设置成衣厂联系人
-        bulkOrderList.setGarmentFactoryPeople(orderList.getGarmentFactoryPeople());
-        //设置成衣厂电话
-        bulkOrderList.setGarmentFactoryTel(orderList.getGarmentFactoryTel());
-        //设置收货地址
-        bulkOrderList.setReceivingAddress(orderList.getReceivingAddress());
-        //设置当前消耗时间
-        bulkOrderList.setCurrentTimeConsumption(orderList.getCurrentTimeConsumption());
-        //设置下单时间
-        bulkOrderList.setOrderTime(orderList.getOrderTime());
-        //设置目标时间
-        bulkOrderList.setTargetDate(orderList.getTargetDate());
-        //设置底布
-        bulkOrderList.setBaseCloth(orderList.getBaseCloth());
-        //设置底布价格
-        bulkOrderList.setBaseClothPrice(orderList.getBaseClothPrice());
-        //设置品牌组
-        bulkOrderList.setBrandGroup(orderList.getBrandGroup());
-        //设置工艺类型id
-        bulkOrderList.setGoodsTypeExtend3Id(orderList.getCraftId());
-        //设置花型号id
-        bulkOrderList.setGoodsTypeExtend4Id(orderList.getOemId());
-        return bulkOrderList;
-    }
-
-    /**
-     * 初始化生产计划BO对象
-     * @param orderList 订单列表
-     * @param sysNo 系统单号
-     * @param purchaseCode 生产单号
-     * @return 构建完毕的生产计划BO对象
-     */
-    private ProductionPlan initProductionPlan(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList, String sysNo, String purchaseCode, String orderNumber) {
-        ProductionPlan productionPlan = new ProductionPlan();
-        //设置系统单号
-        productionPlan.setSysNo(sysNo);
-        //设置生产单号
-        productionPlan.setPurchaseCode(purchaseCode);
-        //设置订单单号
-        productionPlan.setOrderNum(orderNumber);
-        //设置用户id
-        productionPlan.setUserId(newBulkOrderBo.getUserId());
-        //设置是否烧花
-        productionPlan.setIsBurnFlowers(orderList.getIsBurnFlowers());
-        //设置是否快返
-        productionPlan.setIsQuickReturn(orderList.getIsQuickReturn());
-        //设置是否作废
-        productionPlan.setIsToVoid(orderList.getIsToVoid());
-        //设置是否多色
-        productionPlan.setIsMulticolor(orderList.getIsMulticolor());
-        //设置是否首单
-        productionPlan.setIsFirstOrder(orderList.getIsFirstOrder());
-        //设置是否紧急
-        productionPlan.setIsUrgent(orderList.getIsUrgent());
-        //设置是否补货
-        productionPlan.setIsBuhuo(orderList.getIsBuhuo());
-        //设置是否系统单
-        productionPlan.setIsSys(orderList.getIsSys());
-        //设置创建时间
-        productionPlan.setCreateTime(newBulkOrderBo.getCreateTime());
-        return productionPlan;
-    }
-
-    private List<UserOrderTemplate> initUserOrderTemplate(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList, Long orderId, Long planId) {
-        ArrayList<UserOrderTemplate> userOrderTemplateList = new ArrayList<>();
-        for (TemplateBo templateBo : orderList.getTemplateList()) {
-            UserOrderTemplate userOrderTemplate = new UserOrderTemplate();
-            //设置用户id
-            userOrderTemplate.setUserId(newBulkOrderBo.getUserId());
-            //设置订单id 对应fa_kuyou_user_order表id
-            userOrderTemplate.setOrderId(orderId);
-            //设置生产计划id 对应fa_kuyou_production_plan表id
-            userOrderTemplate.setPlanId(planId);
-            //设置大货编号id
-            userOrderTemplate.setItemId(orderList.getDaHuoNumberId());
-            //设置份数
-            userOrderTemplate.setNumber(templateBo.getNumber());
-            //设置米数
-            userOrderTemplate.setMiter(templateBo.getMiter());
-            //设置版图名称
-            userOrderTemplate.setName(templateBo.getName());
-            //设置版图图片
-            userOrderTemplate.setImage(templateBo.getImage());
-            userOrderTemplateList.add(userOrderTemplate);
-        }
-        return userOrderTemplateList;
-    }
-
-    private UserOrder initUserOrder(NewBulkOrderBo newBulkOrderBo, OrderListBo orderList, String orderNumber, String remark) {
-        UserOrder userOrder = new UserOrder();
-        //设置用户id
-        userOrder.setUserId(newBulkOrderBo.getUserId());
-        //设置订单名称
-        userOrder.setName(newBulkOrderBo.getUserName());
-        //设置订单电话
-        userOrder.setPhone(newBulkOrderBo.getUserPhone());
-        //设置订单地址
-        userOrder.setAddress(orderList.getReceivingAddress());
-        //设置订单编号
-        userOrder.setOrderNumber(orderNumber);
-        //设置备注
-        userOrder.setRemark(remark);
-        //设置创建时间
-        userOrder.setCreateTime(newBulkOrderBo.getCreateTime());
-        return userOrder;
-    }
 }