‘linchangsheng’ 10 月之前
父节点
当前提交
7b71f8a40c

+ 25 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/SyncOrderDto.java

@@ -0,0 +1,25 @@
+package com.gree.mall.manager.bean;
+
+import com.gree.mall.manager.plus.entity.PgOrderBase;
+import com.gree.mall.manager.plus.entity.PgOrderOperatorLog;
+import com.gree.mall.manager.plus.entity.PgOrderProduct;
+import com.gree.mall.manager.plus.entity.PgOrderWorker;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SyncOrderDto   {
+
+    @ApiModelProperty("工单列表")
+    private List<PgOrderBase> pgOrderBases;
+
+    @ApiModelProperty("师傅id(第一个为大工)")
+    private List<PgOrderWorker> orderWorkers;
+    @ApiModelProperty("产品信息")
+    private List<PgOrderProduct> orderProducts;
+
+    @ApiModelProperty("操作明细")
+    private List<PgOrderOperatorLog> pgOrderOperatorLogs;
+}

+ 50 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/SyncOrderController.java

@@ -0,0 +1,50 @@
+package com.gree.mall.manager.controller.workerorder;
+
+import com.gree.mall.manager.annotation.ApiNotAuth;
+import com.gree.mall.manager.bean.SyncOrderDto;
+import com.gree.mall.manager.bean.workorder.ChangeAppointmentVO;
+import com.gree.mall.manager.bean.workorder.ChangeWorkerVO;
+import com.gree.mall.manager.bean.workorder.PgOrderProductDetailVO;
+import com.gree.mall.manager.bean.workorder.WorkerOrderDetail;
+import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.logic.workorder.ChangeOrderLogic;
+import com.gree.mall.manager.logic.workorder.OrderBaseExcelLogic;
+import com.gree.mall.manager.plus.entity.PgOrderProductDetail;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.util.List;
+
+@Slf4j
+@RestController
+@Api(value = "同步订单sync", tags = {"同步订单sync"})
+@RequestMapping(value = "/sync", produces = "application/json; charset=utf-8")
+public class SyncOrderController {
+
+    @Autowired
+    private OrderBaseExcelLogic orderBaseExcelLogic;
+
+
+    @ApiNotAuth
+    @PostMapping("/sync")
+    @ApiOperation("修改预约时间")
+    public ResponseHelper changeAppointmentTime(
+            @RequestBody SyncOrderDto syncOrderDto,
+            HttpServletRequest request
+    ) throws ParseException {
+
+
+
+        orderBaseExcelLogic.saveThreeOrder(syncOrderDto);
+
+        return ResponseHelper.success();
+    }
+
+
+}

+ 5 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/workorder/OrderBaseStatusEnum.java

@@ -57,6 +57,11 @@ public enum OrderBaseStatusEnum implements BaseEnum {
     FWQX("FWQX","服务取消"),
     FL("FL","分流3.0"),
     YWGO("YWGO","已完工"),
+    DFBPG("DFBPG","待分部派工"),
+    DSPGP("DSPGP","待审批改派"),
+    SQSHCL("SQSHCL","申请售后处理"),
+    YGBGD("YGBGD","已关闭工单"),
+    FGFZF("FGFZF","非广佛作废"),
     ;
 
     @EnumValue

+ 9 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/ChangeOrderLogic.java

@@ -2,9 +2,12 @@ package com.gree.mall.manager.logic.workorder;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.gree.mall.manager.bean.SyncOrderDto;
+import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.workorder.PgOrderProductDetailVO;
 import com.gree.mall.manager.bean.workorder.WorkerOrderDetail;
 import com.gree.mall.manager.enums.PayStatusEnum;
+import com.gree.mall.manager.enums.admin.AdminWebsitTypeEnum;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
 import com.gree.mall.manager.enums.workorder.OrderOperatorLogTypeEnum;
 import com.gree.mall.manager.plus.entity.*;
@@ -19,6 +22,8 @@ import org.thymeleaf.util.StringUtils;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -58,6 +63,9 @@ public class ChangeOrderLogic {
     @Autowired
     PgOrderProductDetailService pgOrderProductDetailService;
 
+    @Autowired
+    PgOrderOperatorLogService pgOrderOperatorLogService;
+
 
     @Transactional(rollbackFor = Exception.class)
     public void changeAppointmentTime(String id, String appointmentTime, String appointmentEndTime,String remark) {
@@ -214,4 +222,5 @@ public class ChangeOrderLogic {
         return workerOrderDetails1;
 
     }
+
 }

+ 66 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseExcelLogic.java

@@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.google.common.collect.Lists;
+import com.gree.mall.manager.bean.SyncOrderDto;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.common.RegionBean;
 import com.gree.mall.manager.commonmapper.CommonMapper;
@@ -67,6 +68,7 @@ public class OrderBaseExcelLogic {
     private final WebsitUserService websitUserService;
     private final PgOrderProductDetailService pgOrderProductDetailService;
     private final UserWaitService userWaitService;
+    private final PgOrderOperatorLogService pgOrderOperatorLogService;
 
 
     /**
@@ -1257,4 +1259,68 @@ public class OrderBaseExcelLogic {
 
     }
 
+
+
+    public void saveThreeOrder(SyncOrderDto syncOrderDto) {
+
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        //品牌map
+        Map<String, Brand> brandMap = sysDictCompanyLogic.brandMapOfName(adminUser.getCompanyWechatId());
+        //工单类型map
+        Map<String, OrderSmallType> orderSmallTypeMap = sysDictCompanyLogic.orderSmallTypeMap(adminUser.getCompanyWechatId());
+        //产品大类,小类map
+        List<GoodsCategory> goodsCategoryList = goodsCategoryService.lambdaQuery()
+                .eq(GoodsCategory::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(GoodsCategory::getType, 2).list();
+        Map<String, GoodsCategory> categoryMap1 = goodsCategoryList.stream().filter(v -> v.getLevel() == 1)
+                .collect(Collectors.toMap(GoodsCategory::getName, v -> v));
+        Map<String, GoodsCategory> categoryMap2 = goodsCategoryList.stream().filter(v -> v.getLevel() == 2)
+                .collect(Collectors.toMap(GoodsCategory::getName, v -> v));
+        List<WebsitUser> websitUsers = websitUserService.lambdaQuery().groupBy(WebsitUser::getWorkerNumber).list();
+        Map<String, WebsitUser> websitUserMap = websitUsers.stream()
+                .collect(Collectors.toMap(WebsitUser::getWorkerNumber, v -> v));
+
+        List<User> users = userService.lambdaQuery().eq(User::getType, "WORKER").list();
+        Map<String, User> userMap = users.stream()
+                .collect(Collectors.toMap(User::getUserId, v -> v));
+
+        //工单渠道
+        // Map<String, SysDictCompany> orderChannelMap = sysDictCompanyLogic.dictByTypeOfValue(SysDictConstant.ORDER_CHANNEL, adminUser.getCompanyWechatId());
+        //网点名称
+        Map<String, AdminWebsit> adminWebsitMap = adminWebsitService.lambdaQuery()
+                .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .in(adminUser.getType() == 0, AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds())
+                .eq(AdminWebsit::getType, AdminWebsitTypeEnum.C.getKey())
+                .list().stream().collect(Collectors.toMap(AdminWebsit::getWebsitId, Function.identity()));
+        //已完工标识
+        List<String> overOrderIds = new ArrayList<>();
+
+        //本次导入的旧的工单集合 (并清空旧的师傅信息)
+        // Map<String, PgOrderBase> oldOrderBaseMap = getOldOrderBase(rows);
+        //本商户的所有师傅
+        Map<String, User> workerMap = getWorkers(adminUser.getCompanyWechatId());
+
+        for (PgOrderBase pgOrderBase : syncOrderDto.getPgOrderBases()) {
+
+            Region region = orderBaseLogic.getRegion(pgOrderBase.getProvince(), pgOrderBase.getCity(), pgOrderBase.getArea(), pgOrderBase.getStreet());
+
+            if (region != null){
+                pgOrderBase.setProvinceId(region.getProvinceCode());
+                pgOrderBase.setCityId(region.getCityCode());
+                pgOrderBase.setAreaId(region.getAreaCode());
+                pgOrderBase.setStreetId(region.getId());
+
+            }
+        }
+
+
+        pgOrderBaseService.saveOrUpdateBatch(syncOrderDto.getPgOrderBases());
+
+        pgOrderWorkerService.saveOrUpdateBatch(syncOrderDto.getOrderWorkers());
+
+        pgOrderProductService.saveOrUpdateBatch(syncOrderDto.getOrderProducts());
+
+        pgOrderOperatorLogService.saveOrUpdateBatch(syncOrderDto.getPgOrderOperatorLogs());
+    }
+
 }