From 5689b40db45e6492921e7c8b6a4226972f1da767 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 08 四月 2025 13:37:32 +0800
Subject: [PATCH] 工单业务

---
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |  188 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 186 insertions(+), 2 deletions(-)

diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
index 3d531b2..a89cd1a 100644
--- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -1,20 +1,32 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.WorkorderMapper;
-import com.doumee.dao.business.model.Workorder;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.model.*;
 import com.doumee.service.business.WorkorderService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.catalina.Manager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 宸ュ崟淇℃伅琛⊿ervice瀹炵幇
@@ -27,11 +39,172 @@
     @Autowired
     private WorkorderMapper workorderMapper;
 
+    @Autowired
+    private MultifileMapper multifileMapper;
+
+    @Autowired
+    private WorkorderLogMapper workorderLogMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private MemberMapper memberMapper;
+
+    @Autowired
+    private ManagersMapper managersMapper;
+
     @Override
     public Integer create(Workorder workorder) {
+        this.isValidBaseParam(workorder);
+        workorder.setCreateDate(new Date());
+        workorder.setEditDate(new Date());
+        workorder.setMemberId(workorder.getMemberId());
+        workorder.setIsdeleted(Constants.ZERO);
+        workorder.setStatus(Constants.ZERO);
+        //璺岀粖婊戜簨浠朵笂鎶� 鏌ヨSHE璐熻矗浜�
+        if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){
+            List<Managers> managersList = managersMapper.selectList(new QueryWrapper<Managers>().lambda().eq(Managers::getIsdeleted,Constants.ZERO)
+                    .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum)
+            );
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(managersList)){
+                workorder.setQwnoticeMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(",")));
+            }
+        }
         workorderMapper.insert(workorder);
+        //瀛樺偍闄勪欢淇℃伅
+        List<Multifile> multifileList = workorder.getMultifileList();
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            for (Multifile multifile:multifileList) {
+                multifile.setObjId(workorder.getId());
+                multifile.setCreateDate(new Date());
+                //TODO 鍚庣画鏁寸悊澶勭悊
+                if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){//SHE浜嬩欢涓婃姤鍥剧墖
+                    multifile.setObjType(Constants.ZERO);
+                }else if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){//璺岀粖婊戜簨浠朵笂鎶ュ浘鐗�
+                    multifile.setObjType(Constants.ONE);
+                }
+            }
+            multifileMapper.insert(multifileList);
+        }
+        //澶勭悊涓婃姤鏃ュ織
+        this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId());
         return workorder.getId();
     }
+
+
+    /**
+     *
+     * @param beforeJson
+     * @param afterWorkorder
+     * @param objType 鎿嶄綔绫诲瀷 0浠诲姟涓婃姤 1浠诲姟纭 2浠诲姟鍒嗛厤鐗╀笟涓荤 3浠诲姟鍏抽棴 4浠诲姟鍒嗛厤澶勭悊浜� 5浠诲姟鍌績
+     * @param memberId
+     */
+    public void saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId){
+        WorkorderLog workorderLog = new WorkorderLog();
+        workorderLog.setCreateDate(new Date());
+        workorderLog.setEditDate(new Date());
+        workorderLog.setIsdeleted(Constants.ZERO);
+        workorderLog.setBeforeContent(beforeJson);
+        workorderLog.setAfterContent(JSONObject.toJSONString(afterWorkorder));
+        workorderLog.setParam1(memberId.toString());
+        workorderLog.setObjId(afterWorkorder.getId().toString());
+        workorderLog.setObjType(objType);
+        workorderLogMapper.insert(workorderLog);
+    }
+
+
+    /**
+     * 鏁版嵁鏍¢獙
+     * @param workorder
+     */
+    public void isValidBaseParam(Workorder workorder){
+        if(Objects.isNull(workorder)
+        || Objects.isNull(workorder.getSubmitDate())
+        || Objects.isNull(workorder.getHappenTime())
+        || Objects.isNull(workorder.getType())
+        || !( Constants.equalsInteger(workorder.getType(),Constants.ZERO) || Constants.equalsInteger(workorder.getType(),Constants.ONE)
+            || Constants.equalsInteger(workorder.getType(),Constants.TWO) || Constants.equalsInteger(workorder.getType(),Constants.THREE)
+        )){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        //SHE 浜嬩欢涓婃姤
+        if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){
+            if(Objects.isNull(workorder.getMemberType())
+                    || Objects.isNull(workorder.getLocaltionId())
+                    || Objects.isNull(workorder.getOutJiuyi())
+                    || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Objects.isNull(workorder.getIsYiwushi()))
+                    || (Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted()))
+                    || Objects.isNull(workorder.getCategoryId())
+                    || Objects.isNull(workorder.getWorkRelated())
+                    || (Constants.equalsInteger(workorder.getMemberType(),Constants.TWO) && StringUtils.isEmpty(workorder.getMemberNames()))
+                    || (Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO) && StringUtils.isEmpty(workorder.getMemberQwids()))
+                    || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo())
+            ){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+        }
+        //璺岀粖婊� 浜嬩欢涓婃姤
+        if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){
+            if(Objects.isNull(workorder.getTypeId())
+                || Objects.isNull(workorder.getLocaltionId())
+                || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo())
+            ){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
+        }
+
+
+    }
+
+    @Override
+    public Workorder getDetail(Integer id){
+        Workorder workorder = workorderMapper.selectJoinOne(Workorder.class,
+                new MPJLambdaWrapper<Workorder>()
+                        .selectAll(Workorder.class)
+                        .selectAs(Member::getName,Workorder::getMemberName)
+                        .selectAs(Company::getNamePath,Workorder::getCompanyName)
+                        .select(" c1.name ",Workorder::getHurtTypeName)
+                        .select(" c2.name ",Workorder::getLocationTypeName)
+                        .select(" c3.name ",Workorder::getTypeName)
+                        .select(" c4.name ",Workorder::getProblemName)
+                        .leftJoin(Member.class,Member::getId,Workorder::getMemberId)
+                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                        .leftJoin(" category c1 on  t.CATEGORY_ID = c1.id   ") //鍙椾激绫诲埆
+                        .leftJoin(" category c2 on  t.LOCALTION_ID = c2.id   ") //鍙戠敓鍦扮偣
+                        .leftJoin(" category c3 on  t.TYPE_ID = c3.id   ") //椋庨櫓绫诲瀷
+                        .leftJoin(" category c4 on  t.PROBLEM_ID = c4.id   ") //DCA闂缂栫爜
+                        .eq(Workorder::getId,id)
+                        .last(" limit 1 ")
+        );
+        if(Objects.nonNull(workorder)){
+            //濡傛灉鏄疭HE浜嬩欢涓婃姤 SHE娑夊強浜哄憳绫诲瀷涓哄悓浜嬩俊鎭� 闇�瑕佹煡璇㈠悓浜嬪悕绉�
+            if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)&&Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)){
+                List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getQwId, Arrays.asList(workorder.getMemberQwids().split(","))));
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){
+                    workorder.setColleague(memberList.stream().map(i->i.getName()).collect(Collectors.joining(",")));
+                }
+            }
+            //鏌ヨ闄勪欢淇℃伅
+            List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO)
+                    .eq(Multifile::getObjId,workorder).orderByAsc(Multifile::getId));
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+                String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                        +systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_FILE_PATH).getCode();
+                for (Multifile multifile:multifileList) {
+                    multifile.setFileurlFull(path+multifile.getFileurl());
+                }
+                workorder.setMultifileList(multifileList);
+            }
+        }
+
+
+        return workorder;
+    }
+
+
+
+
 
     @Override
     public void deleteById(Integer id) {
@@ -154,4 +327,15 @@
         QueryWrapper<Workorder> wrapper = new QueryWrapper<>(workorder);
         return workorderMapper.selectCount(wrapper);
     }
+
+
+
+
+
+
+
+
+
+
+
 }

--
Gitblit v1.9.3