.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: # é»è®¤æ¶åº