jiangping
2025-06-26 2edf3f1fd9505cbdd435524d316e7558b25f6760
代码初始化
已删除1个文件
已修改19个文件
168 ■■■■ 文件已修改
.idea/modules.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/lianhelihua_admin/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/company.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaManagersWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDbh.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDcaChild.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lianhelihua_sh.iml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/business/CompanyController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/api/web/WebWorkOrderController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/CompanyMemberMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/model/Company.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/model/CompanyMember.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/business/vo/CompanyTree.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/CompanyService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-dev.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-pro.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-test.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml
@@ -2,8 +2,8 @@
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/dmttwebsite.iml" filepath="$PROJECT_DIR$/dmttwebsite.iml" />
      <module fileurl="file://$PROJECT_DIR$/server/lianghelihua.iml" filepath="$PROJECT_DIR$/server/lianghelihua.iml" />
      <module fileurl="file://$PROJECT_DIR$/lianhelihua_sh.iml" filepath="$PROJECT_DIR$/lianhelihua_sh.iml" />
    </modules>
  </component>
</project>
admin/lianhelihua_admin/index.html
@@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.94e81d49.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.52ca84c8.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.52ca84c8.js"></script><script src="/lianhelihua_admin/static/js/app.94e81d49.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/lianhelihua_admin/icon.png"><title>联合利华事件上报系统</title><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="/lianhelihua_admin/static/js/app.ecb1f3a1.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/js/chunk-vendors.fe7fcf11.js" rel="preload" as="script"><link href="/lianhelihua_admin/static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="/lianhelihua_admin/static/css/app.39e777cc.css" rel="stylesheet"></head><body><div id="app"></div><script src="/lianhelihua_admin/static/js/chunk-vendors.fe7fcf11.js"></script><script src="/lianhelihua_admin/static/js/app.ecb1f3a1.js"></script></body></html>
admin/src/api/business/company.js
@@ -12,6 +12,11 @@
    trim: true
  })
}
export function treeWithMember (data) {
  return request.post('/business/company/treeWithMember', encryptData(data), {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
admin/src/components/business/OperaManagersWindow.vue
@@ -29,7 +29,7 @@
            show-checkbox
            node-key="id"
            default-expand-all
            @check-change="changeTree"
            @check-change="changeTree"
            :expand-on-click-node="false"
            :check-on-click-node="true"
            :props="{children: 'childList',label: 'name'}">
admin/src/views/business/workorderDbh.vue
@@ -26,10 +26,13 @@
        <el-form-item label="状态描述" prop="status">
          <el-select v-model="searchForm.status" placeholder="请选择" clearable  @change="search" >
            <el-option label="待分配WTS" value="0"></el-option>
            <el-option label="待分配工程师" value="1"></el-option>
            <el-option label="SHE关闭" value="2"></el-option>
            <el-option label="WTS关闭" value="3"></el-option>
            <el-option label="工程师关闭" value="4"></el-option>
<!--
            <el-option label="待分配任务" value="1"></el-option>
-->
            <el-option label="待工程师处理" value="2"></el-option>
            <el-option label="SHE关闭" value="3"></el-option>
            <el-option label="WTS关闭" value="4"></el-option>
            <el-option label="工程师关闭" value="5"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="提交时间" prop="queryStartTime">
admin/src/views/business/workorderDcaChild.vue
@@ -32,10 +32,13 @@
        <el-form-item label="状态描述" prop="status">
          <el-select v-model="searchForm.status" placeholder="请选择" clearable  @change="search" >
            <el-option label="待分配WTS" value="0"></el-option>
            <el-option label="待分配工程师" value="1"></el-option>
            <el-option label="SHE关闭" value="2"></el-option>
            <el-option label="WTS关闭" value="3"></el-option>
            <el-option label="工程师关闭" value="4"></el-option>
<!--
            <el-option label="待分配任务" value="1"></el-option>
-->
            <el-option label="待工程师处理" value="2"></el-option>
            <el-option label="SHE关闭" value="3"></el-option>
            <el-option label="WTS关闭" value="4"></el-option>
            <el-option label="工程师关闭" value="5"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="提交时间" prop="queryStartTime">
admin/src/views/index.vue
@@ -34,8 +34,8 @@
-->
            </div>
            <div class="content">
              <div>未解决:{{ headerData.dbhYesNum || 0}}</div>
              <div>已解决:{{ headerData.dbhNoNum || 0}}</div>
              <div>未解决:{{ headerData.dbhNoNum || 0}}</div>
              <div>已解决:{{ headerData.dbhYesNum || 0}}</div>
               <div>总工单量:{{ headerData.dbhNum || 0}}</div>
            </div>
          </div>
@@ -48,8 +48,8 @@
<!--              <img src="@/assets/icons/home_icon3.png" alt="" />-->
            </div>
            <div class="content">
              <div>符合项:{{ headerData.dcaYesNum || 0}}</div>
              <div>不符合项:{{ headerData.dcaNoNum || 0}}</div>
              <div>符合项:{{ headerData.dcaNoNum || 0}}</div>
              <div>不符合项:{{ headerData.dcaYesNum || 0}}</div>
              <div>总上报次数:{{ headerData.dcaNum || 0}}</div>
            </div>
          </div>
@@ -62,8 +62,8 @@
<!--              <img src="@/assets/images/bg_a.png" alt="" />-->
            </div>
            <div class="content">
              <div>未解决:{{ headerData.dcaChildYesNum || 0}}</div>
              <div>已解决:{{ headerData.dcaChildNoNum || 0}}</div>
              <div>未解决:{{ headerData.dcaChildNoNum || 0}}</div>
              <div>已解决:{{ headerData.dcaChildYesNum || 0}}</div>
              <div>总工单量:{{ headerData.dcaChildNum || 0}}</div>
            </div>
          </div>
lianhelihua_sh.iml
ÎļþÒÑɾ³ý
server/src/main/java/com/doumee/api/business/CompanyController.java
@@ -58,6 +58,14 @@
    public ApiResponse<List<Company>> tree (@RequestBody Company company){
        return ApiResponse.success(companyService.companyTree());
    }
    @ApiOperation("组织树查询")
    @PostMapping("/treeWithMember")
    @EncryptionResp
    @EncryptionReq
    @RequiresPermissions("business:company:query")
    public ApiResponse<List<Company>> treeWithMember (@RequestBody Company company){
        return ApiResponse.success(companyService.companyTreeWithMember ());
    }
    @ApiOperation("根据ID删除")
server/src/main/java/com/doumee/api/web/WebWorkOrderController.java
@@ -4,6 +4,7 @@
import com.doumee.config.annotation.EncryptionReq;
import com.doumee.config.annotation.EncryptionResp;
import com.doumee.config.annotation.LoginRequired;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -56,6 +57,7 @@
    @LoginRequired
    @ApiOperation("风险上报")
    @PostMapping("/create")
    @PreventRepeat
    @EncryptionReq
    @EncryptionResp
    public ApiResponse create (@RequestBody Workorder workorder, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token) {
@@ -111,6 +113,7 @@
    @LoginRequired
    @ApiOperation("工单关闭")
    @PostMapping("/closeWorkOrder")
    @PreventRepeat
    @EncryptionReq
    @EncryptionResp
    public ApiResponse closeWorkOrder(@RequestBody CloseDTO closeDTO, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token) {
@@ -132,6 +135,7 @@
    @LoginRequired
    @ApiOperation("工单指派")
    @PostMapping("/passOn")
    @PreventRepeat
    @EncryptionReq
    @EncryptionResp
    public ApiResponse passOn(@RequestBody PassOnDTO passOnDTO, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token) {
@@ -152,6 +156,7 @@
    @LoginRequired
    @ApiOperation("工单催促")
    @GetMapping("/urge")
    @PreventRepeat
    @EncryptionReq
    @EncryptionResp
    public ApiResponse urge(@RequestParam Integer workorderId, @RequestHeader(JwtTokenUtil.HEADER_KEY) String token) {
@@ -169,6 +174,7 @@
    @LoginRequired
    @ApiOperation("工单抄送")
    @PreventRepeat
    @PostMapping("/sendCopy")
    @EncryptionReq
    @EncryptionResp
server/src/main/java/com/doumee/dao/business/CompanyMemberMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.CompanyMember;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @since 2025/04/03 16:30
 */
public interface CompanyMemberMapper extends BaseMapper<CompanyMember> {
public interface CompanyMemberMapper extends MPJBaseMapper<CompanyMember> {
}
server/src/main/java/com/doumee/dao/business/model/Company.java
@@ -96,5 +96,11 @@
    @ApiModelProperty(value = "是否包含子菜单")
    @TableField(exist = false)
    private Boolean hasChildren;
    @ApiModelProperty(value = "对象类型 0部门 1员工")
    @TableField(exist = false)
    private int objType;
    @ApiModelProperty(value = "人员编码(关联member", example = "1")
    @TableField(exist = false)
    private Integer memberId;
}
server/src/main/java/com/doumee/dao/business/model/CompanyMember.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -53,8 +54,11 @@
    @ApiModelProperty(value = "人员编码(关联member", example = "1")
    private Integer memberId;
    @ApiModelProperty(value = "是否为部门负责人0-否;1-是", example = "1")
    private Integer isLeader;
    @ApiModelProperty(value = "人员姓名", example = "1")
    @TableField(exist = false)
    private String memberName;
}
server/src/main/java/com/doumee/dao/business/vo/CompanyTree.java
@@ -1,9 +1,14 @@
package com.doumee.dao.business.vo;
import com.doumee.core.constants.Constants;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyMember;
import com.doumee.dao.business.model.Member;
import org.apache.commons.lang3.StringUtils;
import org.yaml.snakeyaml.scanner.Constant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@@ -17,6 +22,7 @@
    // ä¿å­˜å‚与构建树形的所有数据(通常数据库查询结果)
    public List<Company> nodeList = new ArrayList<>();
    public List<CompanyMember> memberList = new ArrayList<>();
    public Integer origin = 0; //0自建 1企微
@@ -28,6 +34,11 @@
    public CompanyTree(List<Company> nodeList, Integer origin){
        this.nodeList = nodeList;
        this.origin = origin;
    }
    public CompanyTree(List<Company> nodeList, Integer origin, List<CompanyMember> memberList ){
        this.nodeList = nodeList;
        this.origin = origin;
        this.memberList=memberList;
    }
@@ -105,12 +116,21 @@
                if (!Objects.isNull(treeNode.getParentId())&&treeNode.getParentId().equals(pNode.getId())) {
                    // å†é€’归进行判断当前节点的情况,调用自身方法
                    childTree.add(buildChildTree(treeNode));
                }
            }
        }
        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
        pNode.setChildList(childTree);
        if(childTree == null || childTree.size() ==0){
        List<Company> memberList = getMemberNode(pNode.getId());
        if(memberList!=null && memberList.size()>0){
            if(pNode.getChildList() == null){
                pNode.setChildList(memberList);
            }else{
                pNode.getChildList().addAll(memberList);
            }
        }
        if(  pNode.getChildList() == null ||   pNode.getChildList().size() ==0){
            pNode.setHasChildren(Boolean.FALSE);
        }else{
            pNode.setHasChildren(Boolean.TRUE);
@@ -118,5 +138,21 @@
        return pNode;
    }
    private   List<Company> getMemberNode(Integer id) {
        List<Company> companyList = new ArrayList<>();
        if(memberList!=null && memberList.size()>0){
            for(CompanyMember member :memberList){
                if(member.getCompanyId()!=null && Constants.equalsInteger(member.getCompanyId(),id)){
                    Company com = new Company();
                    com.setObjType(Constants.ONE);
                    com.setName(member.getMemberName());
                    com.setMemberId(member.getMemberId());
                    companyList.add(com);
                }
            }
        }
        return companyList;
    }
}
server/src/main/java/com/doumee/service/business/CompanyService.java
@@ -98,4 +98,5 @@
    int syncAll(Company company);
    List<Company> companyTree();
    List<Company> companyTreeWithMember();
}
server/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -15,7 +15,9 @@
import com.doumee.core.utils.qiyeweixin.QywxUtil;
import com.doumee.core.utils.qiyeweixin.model.response.QywxDepartInfoResponse;
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.CompanyMemberMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyMember;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.vo.CompanyTree;
import com.doumee.dao.system.model.SystemUser;
@@ -47,6 +49,8 @@
    private RedisTemplate<Object, Serializable> redisTemplate;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private CompanyMemberMapper companyMemberMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -151,6 +155,9 @@
    @Override
    public List<Company> companyTree( ) {
        return companyTreeBiz(0);
    }
    public List<Company> companyTreeBiz(int type ) {
        MPJLambdaWrapper<Company> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Company.class);
        queryWrapper.selectAs(SystemUser::getUsername,Company::getEditorName);
@@ -161,10 +168,23 @@
        queryWrapper.eq(Company::getIsdeleted,Constants.ZERO);
        queryWrapper.orderByAsc( "t.code");
        List<Company> companyList = companyMapper.selectJoinList(Company.class,queryWrapper);
        CompanyTree treeBuild = new CompanyTree(companyList, 0);
        List<CompanyMember> memberList = null;
        if(type == 1){
            memberList = companyMemberMapper.selectJoinList(CompanyMember.class,new MPJLambdaWrapper<CompanyMember>()
                    .selectAll(CompanyMember.class)
                    .selectAs(Member::getName,CompanyMember::getMemberName)
                    .leftJoin(Member.class,Member::getId,CompanyMember::getMemberId)
                    .eq(Member::getIsdeleted,Constants.ZERO )
                    .eq(CompanyMember::getIsdeleted,Constants.ZERO ));
        }
        CompanyTree treeBuild = new CompanyTree(companyList, 0,memberList);
        companyList = treeBuild.buildTree();
        return companyList;
    }
    @Override
    public List<Company> companyTreeWithMember() {
        return companyTreeBiz(1);
    }
    @Override
    public int syncAll(Company company) {
server/src/main/resources/application-dev.yml
@@ -1,4 +1,9 @@
# WEB服务器配置
project:
  # çŽ¯å¢ƒï¼Œç”Ÿäº§çŽ¯å¢ƒproduction,开发环境development
  env: development
  # æ¨¡å¼ï¼Œtesting测试模式
  mode: testing
server:
  port: 10010
spring:
server/src/main/resources/application-pro.yml
@@ -1,3 +1,9 @@
project:
  # çŽ¯å¢ƒï¼Œç”Ÿäº§çŽ¯å¢ƒproduction,开发环境development
  env: production
  # æ¨¡å¼ï¼Œtesting测试模式
  mode: production
# WEB服务器配置
server:
  port: 10010
server/src/main/resources/application-test.yml
@@ -1,4 +1,8 @@
# WEB服务器配置
project:
  # çŽ¯å¢ƒï¼Œç”Ÿäº§çŽ¯å¢ƒproduction,开发环境development
  env: production
  # æ¨¡å¼ï¼Œtesting测试模式
  mode: production
server:
  port: 10040
server/src/main/resources/application.yml
@@ -2,14 +2,10 @@
project:
  name: è”合利华事件上报系统
  version: 1.0.0
  # çŽ¯å¢ƒï¼Œç”Ÿäº§çŽ¯å¢ƒproduction,开发环境development
  env: development
  # æ¨¡å¼ï¼Œtesting测试模式
  mode: testing
spring:
  profiles:
    active: dev
    active: test
  # JSON返回配置
  jackson:
    # é»˜è®¤æ—¶åŒº