From cbc9250b33a955bc919a6afc5d4101ef65bbfafa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 10 十一月 2023 12:53:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/zycrm' into zycrm

---
 src/main/java/com/zy/crm/manager/controller/OrderController.java |  262 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 245 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/controller/OrderController.java b/src/main/java/com/zy/crm/manager/controller/OrderController.java
index 3020843..ce30429 100644
--- a/src/main/java/com/zy/crm/manager/controller/OrderController.java
+++ b/src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -1,21 +1,19 @@
 package com.zy.crm.manager.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.R;
+import com.core.common.*;
 import com.core.domain.KeyValueVo;
 import com.core.exception.CoolException;
+import com.zy.crm.common.model.SettleDto;
 import com.zy.crm.common.web.BaseController;
 import com.zy.crm.manager.controller.result.FollowerTableVo;
-import com.zy.crm.manager.entity.Order;
-import com.zy.crm.manager.entity.OrderFoll;
-import com.zy.crm.manager.service.OrderFollService;
-import com.zy.crm.manager.service.OrderService;
+import com.zy.crm.manager.entity.*;
+import com.zy.crm.manager.service.*;
 import com.zy.crm.system.entity.Role;
 import com.zy.crm.system.entity.User;
 import com.zy.crm.system.service.UserService;
@@ -39,6 +37,14 @@
 
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private PlanService planService;
+    @Autowired
+    private PriOnline2Service priOnline2Service;
+    @Autowired
+    private PriQuoteService priQuoteService;
+    @Autowired
+    private FollowUpService followUpService;
 
     @RequestMapping(value = "/order/{id}/auth")
     @ManagerAuth
@@ -52,17 +58,36 @@
                   @RequestParam(defaultValue = "10") Integer limit,
                   @RequestParam(required = false) String condition,
                   @RequestParam(required = false, value = "dept_id") Long deptId,
-                  @RequestParam(required = false, value = "user_id") Long userId){
+                  @RequestParam(required = false, value = "user_id") Long userId,
+                  @RequestParam Map<String, Object> param){
+        Integer status = null;
+        if (param.get("status") != null) {
+            status = Integer.parseInt(param.get("status").toString());
+        }
+
+        Long director = null;
+        if (deptId==null && userId == null){
+            if (getRole().getId()==3){
+                userId = getUserId();
+            }else if (getRole().getId()==2){
+                deptId = getDeptId();
+                userId = null;
+            }
+            director = getUserId();
+        }
+
         return R.ok(orderService.getPage(new Page<>(curr, limit)
                 , getHostId()
                 , deptId == null ? null : String.valueOf(deptId)
-                , userId == null ? getUserId() : userId
-                , condition)
+                , userId
+                , director
+                , condition
+                , status)
         );
     }
 
     @RequestMapping(value = "/order/add/auth")
-    @ManagerAuth
+    @ManagerAuth(memo = "娣诲姞璺熻釜椤圭洰")
     public R add(Order order) {
         Long hostId = getHostId();
         if (orderService.selectByUuid(hostId, order.getUuid()) != null) {
@@ -77,32 +102,214 @@
         order.setCreateTime(new Date());
         order.setUpdateBy(getUserId());
         order.setUpdateTime(new Date());
-        order.setStatus(1);
+        order.setStatus(0);
         order.setStep(1);
 
         orderService.insert(order);
         return R.ok();
     }
 
+    @RequestMapping(value = "/order/userName/userId/auth")
+    @ManagerAuth(memo = "娣诲姞璺熻釜椤圭洰鑾峰彇褰撳墠鐧诲綍璐﹀彿淇℃伅")
+    public R userNameAndUserId() {
+        KeyValueVo keyValueVo = new KeyValueVo(getUser().getNickname(),getUserId());
+        return R.ok().add(keyValueVo);
+    }
+
 	@RequestMapping(value = "/order/update/auth")
-	@ManagerAuth
+	@ManagerAuth(memo = "鏇存柊璺熻釜椤圭洰")
+    @Transactional
     public R update(Order order){
         if (Cools.isEmpty(order) || null==order.getId()){
             return R.error();
         }
+        Date now = new Date();
+
+        if (order.getStatus()!=0){
+            if (Cools.isEmpty(order.getMemoExperience())){
+                return R.error("璇疯緭鍏ュ績寰椾綋浼�");
+            }else {
+                FollowUp followUp = new FollowUp();
+                followUp.setWorkMsg(order.getMemoExperience());
+                followUp.setOrderId(order.getId());
+                followUp.setUserId(getUserId());
+                followUp.setCreateBy(getUserId());
+                followUp.setUpdateBy(getUserId());
+                followUp.setDirector(getUserId());
+                followUp.setDeptId(getDeptId());
+                followUp.setCreateTime(now);
+                followUp.setUpdateTime(now);
+                followUpService.insert(followUp);
+            }
+        }
+
+        order.setMemoExperience(null);
         order.setUpdateBy(getUserId());
-        order.setUpdateTime(new Date());
+        order.setUpdateTime(now);
+        Order orderOld = orderService.selectById(order.getId());
+        if (Cools.isEmpty(orderOld) || null==orderOld.getId()){
+            return R.error();
+        }
+        if (!orderOld.getDirector().equals(order.getDirector())){
+            User user = userService.selectById(order.getDirector());
+            order.setUserId(user.getId());
+            order.setDeptId(user.getDeptId());
+            order.setHostId(user.getHostId());
+
+            updateDirector(order.getId(),user,now);
+        }
         orderService.updateById(order);
+
+
         return R.ok();
     }
 
+    public void updateDirector(Long orderId, User user , Date now){
+        User manager = new User();
+        try{
+            manager = userService.getDeptManager(getHostId(), user.getDeptId());        // 鑾峰彇閮ㄩ棬棰嗗
+        }catch (Exception e){
+            manager = user;
+        }
+        try{
+            List<Plan> plans = planService.selectList(new EntityWrapper<Plan>().eq("order_id", orderId));
+            for (Plan plan:plans){
+                boolean signPlan = false;
+                List<PriOnline2> priOnline2s = priOnline2Service.selectList(new EntityWrapper<PriOnline2>().eq("item_id", plan.getId()));
+                if (!Cools.isEmpty(priOnline2s)){
+                    for (PriOnline2 priOnline2:priOnline2s){
+                        boolean signPriOnline2 = false;
+                        List<PriQuote> priQuotes = priQuoteService.selectList(new EntityWrapper<PriQuote>().eq("pri_online_id", priOnline2.getId()));
+                        if (!Cools.isEmpty(priQuotes)){
+                            for (PriQuote priQuote:priQuotes){
+                                if (priQuote.getSettle()>=4){
+                                    continue;
+                                }
+                                signPriOnline2 = true;
+                                priQuote.setUserId(user.getId());
+                                priQuote.setDeptId(user.getDeptId());
+                                priQuote.setHostId(user.getHostId());
+                                priQuote.setUpdateUserId(getUserId());
+                                priQuote.setUpdateTime(now);
+
+                                List<SettleDto> priQuoteDtos = JSON.parseArray(priQuote.getSettleMsg(), SettleDto.class);
+                                List<SettleDto> priQuoteDtoList = new ArrayList<>();
+                                for (SettleDto dto : priQuoteDtos) {
+                                    switch (dto.getStep()) {
+                                        case 1:
+                                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�"+priQuote.getUserId$());
+                                            dto.setUserId(priQuote.getUserId());
+                                            dto.setUsername(priQuote.getUserId$());
+                                            break;
+                                        case 2:
+                                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜烘椂鍚屾淇敼璐熻矗浜虹粡鐞嗕负锛�"+manager.getNickname());
+                                            dto.setUserId(manager.getId());
+                                            dto.setUsername(manager.getNickname());
+                                            break;
+                                        case 4:
+                                            dto.setUserId(priQuote.getUserId());
+                                            dto.setUsername(priQuote.getUserId$());
+                                            break;
+                                        default:
+                                            break;
+                                    }
+                                    priQuoteDtoList.add(dto);
+                                }
+                                priQuote.setSettleMsg(JSON.toJSONString(priQuoteDtoList));
+
+                                priQuoteService.updateById(priQuote);
+                            }
+                        }else {
+                            signPriOnline2=true;
+                        }
+                        if (!signPriOnline2){
+                            continue;
+                        }
+                        signPlan = true;
+
+                        priOnline2.setUserId(user.getId());
+                        priOnline2.setDeptId(user.getDeptId());
+                        priOnline2.setHostId(user.getHostId());
+                        priOnline2.setUpdateUserId(getUserId());
+                        priOnline2.setUpdateTime(now);
+                        List<SettleDto> priOnline2Dtos = JSON.parseArray(priOnline2.getSettleMsg(), SettleDto.class);
+                        List<SettleDto> priOnline2DtoList = new ArrayList<>();
+                        for (SettleDto dto : priOnline2Dtos) {
+                            if (dto.getStep() == 0) {
+                                dto.setMsg(dto.getMsg() + " 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� " + DateUtils.convert(now) + " 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�" + priOnline2.getUser$());
+                            } else if (dto.getStep().equals(priOnline2.getSettleSize())) {
+                                dto.setUserId(priOnline2.getUserId());
+                                dto.setUsername(priOnline2.getUser$());
+                            }
+                            priOnline2DtoList.add(dto);
+                        }
+                        priOnline2.setSettleMsg(JSON.toJSONString(priOnline2DtoList));
+
+                        priOnline2Service.updateById(priOnline2);
+                    }
+
+                }else {
+                    signPlan=true;
+                }
+
+                if (!signPlan){
+                    continue;
+                }
+
+                plan.setUserId(user.getId());
+                plan.setDeptId(user.getDeptId());
+                plan.setHostId(user.getHostId());
+                plan.setUpdateBy(getUserId());
+                plan.setUpdateTime(now);
+
+                List<SettleDto> planDtos = JSON.parseArray(plan.getSettleMsg(), SettleDto.class);
+                List<SettleDto> planDtoList = new ArrayList<>();
+                for (SettleDto dto : planDtos) {
+                    switch (dto.getStep()) {
+                        case 1:
+                            dto.setMsg(dto.getMsg()+" 鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�� "+DateUtils.convert(now)+" 璺熻釜椤圭洰淇敼璐熻矗浜轰负锛�"+plan.getUserId$());
+                            dto.setUserId(plan.getUserId());
+                            dto.setUsername(plan.getUserId$());
+                            break;
+                        case 4:
+                            dto.setUserId(plan.getUserId());
+                            dto.setUsername(plan.getUserId$());
+                            break;
+                        default:
+                            break;
+                    }
+                    planDtoList.add(dto);
+                }
+                plan.setSettleMsg(JSON.toJSONString(planDtoList));
+                planService.updateById(plan);
+            }
+        }catch (Exception e){
+            R.error();
+            return;
+        }
+        R.ok();
+    }
+
     @RequestMapping(value = "/order/delete/auth")
-    @ManagerAuth
+    @ManagerAuth(memo = "鍒犻櫎璺熻釜椤圭洰")
     public R delete(@RequestParam(value="ids[]") Long[] ids){
          for (Long id : ids){
+             int plan = planService.selectCount(new EntityWrapper<Plan>().eq("order_id", id));
+             if (plan!=0){
+                 return R.error("瀛樺湪鍏宠仈鐨勮鍒掑崟锛岀姝㈠垹闄わ紒锛侊紒");
+             }
             orderService.deleteById(id);
-        }
+         }
         return R.ok();
+    }
+
+    @PostMapping(value = "/order/business/list/auth")
+    @ManagerAuth
+    public R orderBusiness(@RequestParam Long orderId){
+        List<KeyValueVo> vos = new ArrayList<>();
+        vos.add(new KeyValueVo("鍑哄樊鐢宠", 1L));
+        vos.add(new KeyValueVo("鍏跺畠鍑哄樊", 2L));
+        return R.ok().add(vos);
     }
 
     @RequestMapping(value = "/orderQuery/auth")
@@ -116,6 +323,7 @@
             Map<String, Object> map = new HashMap<>();
             map.put("id", order.getId());
             map.put("value", order.getId());
+            map.put("name", order.getName());
             result.add(map);
         }
         return R.ok(result);
@@ -165,7 +373,9 @@
                 , getHostId()
                 , role.judgeLeader() ? String.valueOf(user.getDeptId()) : null
                 , user.getId()
-                , condition);
+                , null
+                , condition
+                , 0);
         List<KeyValueVo> vos = new ArrayList<>();
         page.getRecords().forEach(item -> vos.add(new KeyValueVo(item.getName(), item.getId())));
         return R.ok().add(vos);
@@ -257,6 +467,24 @@
         return R.ok("娣诲姞鎴愬姛");
     }
 
+    @RequestMapping(value = "/order/followers/add/json")
+    @ManagerAuth
+    @Transactional
+    public R cstmrFollowersAddJson(@RequestBody() Map map) {
+        long cstmrId = Long.valueOf(String.valueOf(map.get("orderId")));
+        long followerIds = Long.valueOf(String.valueOf(map.get("followerIds")));
+        if (Cools.isEmpty(cstmrId, followerIds)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        OrderFoll orderFoll = new OrderFoll();
+        orderFoll.setOrderId(cstmrId);
+        orderFoll.setUserId(followerIds);
+        if (!orderFollService.insert(orderFoll)) {
+            throw new CoolException("娣诲姞澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        return R.ok("娣诲姞鎴愬姛");
+    }
+
     @RequestMapping(value = "/order/followers/remove/auth")
     @ManagerAuth
     public R orderFollowersRemove(@RequestParam("orderId") Long orderId,

--
Gitblit v1.9.1