Pārlūkot izejas kodu

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

ggooalice 2 gadi atpakaļ
vecāks
revīzija
bf2f3f094c

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -29,6 +29,7 @@ import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -426,6 +427,17 @@ public class ProjectController {
         return projectService.exportAllProjectCost(request);
     }
 
+    //分页查询员工月度工时表
+    @RequestMapping("/getEmpMonthHours")
+    public HttpRespMsg getEmpMonthHours(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, LocalDate Month,Integer departmentId,String userId) {
+        return projectService.getEmpMonthHours(pageIndex, pageSize, Month,departmentId,userId, request);
+    }
+
+    //导出员工月度工时表
+    @RequestMapping("/exportEmpMonthHours")
+    public HttpRespMsg exportEmpMonthHours() {
+        return projectService.exportAllProjectCost(request);
+    }
 
     //分页查询项目收支平衡表
     @RequestMapping("/getProjectInAndOut")

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -79,6 +79,8 @@ public class TaskController {
     private GroupParticipatorMapper groupParticipatorMapper;
     @Resource
     private DepartmentService departmentService;
+    @Resource
+    private TaskGroupService taskGroupService;
 
     @RequestMapping("/save")
     @Transactional
@@ -258,7 +260,7 @@ public class TaskController {
                         jsonObj.put("value",task.getName());
                         dataJson.add(jsonObj);
                         json.put("template_id","tty9TkCAAAovv416zsWtn0e06CJ635HA");
-                        json.put("url", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://mobworktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
+                        json.put("url", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=0#wechat_redirect");
                         json.put("content_item",dataJson);
                         wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfo, corpUid, json);
                     });
@@ -612,6 +614,11 @@ public class TaskController {
         }
         //查询任务的执行人
         t.setExecutorList(taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", t.getId())));
+        //查询项目负责人id以及所属任务分组负责人id
+        Project project = projectService.getOne(new QueryWrapper<Project>().eq("id", t.getProjectId()));
+        TaskGroup group = taskGroupService.getOne(new QueryWrapper<TaskGroup>().eq("id", t.getGroupId()));
+        t.setProjectInchargerId(project.getInchargerId()==null?"":project.getInchargerId());
+        t.setGroupInchargerId(group.getInchargerId()==null?"":group.getInchargerId());
         msg.data = t;
         return msg;
     }

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java

@@ -109,6 +109,18 @@ public class Task extends Model<Task> {
     @TableField("project_id")
     private Integer projectId;
 
+    /**
+     * 项目负责人id
+     */
+    @TableField(exist = false)
+    private String projectInchargerId;
+
+    /**
+     * 分组负责人id
+     */
+    @TableField(exist = false)
+    private String groupInchargerId;
+
     /**
      * 当前阶段id
      */

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -200,4 +200,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg testRead(String jobId);
 
     HttpRespMsg testAdd(String jobId);
+
+    HttpRespMsg getEmpMonthHours(Integer pageIndex, Integer pageSize, LocalDate Month,Integer departmentId,String userId, HttpServletRequest request);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -851,7 +851,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                 if (realUser.size()!=0){
                     for (DepartmentVO departmentVO : list) {
                         for (User user : realUser) {
-                            if (departmentVO.getId() == user.getDepartmentId()){
+                            if (departmentVO.getId().equals(user.getDepartmentId())){
                                 temp.add(departmentVO);
                                 continue;
                             }

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -6990,4 +6990,61 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return result;
     }
 
+    //分页查询员工月度工时表
+    @Override
+    public HttpRespMsg getEmpMonthHours(Integer pageIndex, Integer pageSize, LocalDate Month,Integer department,String userId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg =new HttpRespMsg();
+//        User targetUser = userMapper.selectById(request.getHeader("token"));
+//        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全部人员月度工时表");
+//        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门月度工时表");
+//        List<Integer> deptIds=null;
+//        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
+//        List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
+//        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
+//        //判断查看权限
+//        if(functionAllList.size()==0){
+//            deptIds=new ArrayList<>();
+//            deptIds.add(-1);
+//            if(functionDeptList.size()>0){
+//                List<Integer> collect = userDepartmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
+//                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
+//                collect.addAll(otherCollect);
+//                for (Integer integer : collect) {
+//                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+//                    deptIds.addAll(branchDepartment);
+//                }
+//            }
+//        }
+//        long total;
+//        List<Map<String,Object>> resultList;
+//        List<Integer> branchDepartment =null;
+//        if(departmentId!=null){
+//            branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
+//        }
+//        if(pageIndex!=null&&pageSize!=null){
+//            Integer size=pageSize;
+//            Integer start=(pageIndex-1)*size;
+//            resultList=projectMapper.getUserWorkingTimeStatic(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
+//            total=projectMapper.findCountWithUserWorkingTime(targetUser.getCompanyId(),startDate,endDate,start,size,userId,branchDepartment,deptIds);
+//        }else{
+//            resultList=projectMapper.getUserWorkingTimeStatic(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
+//            total=projectMapper.findCountWithUserWorkingTime(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
+//        }
+//        for (Map<String, Object> map : resultList) {
+//            BigDecimal phBigDecimal =new BigDecimal(String.valueOf(map.get("planHours")==null?0:map.get("planHours")));
+//            BigDecimal wtBigDecimal =new BigDecimal(String.valueOf(map.get("workingTime")==null?0:map.get("workingTime")));
+//            if(phBigDecimal.compareTo(BigDecimal.ZERO)==0||wtBigDecimal.compareTo(BigDecimal.ZERO)==0){
+//                map.put("proportion",dft.format(0));
+//            }else{
+//                BigDecimal divide = wtBigDecimal.divide(phBigDecimal, 2, BigDecimal.ROUND_HALF_UP);
+//                map.put("proportion",dft.format(divide));
+//            }
+//        }
+//        Map<String,Object> map=new HashMap<>();
+//        map.put("result",resultList);
+//        map.put("total",total);
+//        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
+
 }

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -451,10 +451,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
             if (responseEntity.getStatusCode() == HttpStatus.OK) {
                 String resp = responseEntity.getBody();
+                System.err.println(resp);
                 JSONObject obj = JSONObject.parseObject(resp);
                 if (obj.getIntValue("errcode") == 0) {
                     UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
                     UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
+                }else{
+                    System.err.println("token获取失败");
                 }
             }
         }
@@ -486,6 +489,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
             if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
                 String resp = ResponseEntity.getBody();
+                System.err.println(resp);
                 JSONObject respJson = JSONObject.parseObject(resp);
                 if (respJson.getInteger("errcode")==0){
                     JSONObject queryResult = respJson.getJSONObject("query_result");
@@ -494,7 +498,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         if (jsonArray!=null){
                             user = jsonArray.toArray();
                         }
+                    }else{
+                        System.err.println("通讯录查询请求无userid列表");
                     }
+                }else {
+                    System.err.println("通讯录查询请求失败");
                 }
             }
         }
@@ -514,10 +522,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1 && departmentId == -1){
             Object[] users = getOpenId(wxCorpInfo.getCorpid(), keyword);
             if (users!=null){
+                System.err.println("查询到的users列表为:"+users.toString());
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
                 data.put("records",realUser);
                 return httpRespMsg;
             }else {
+                System.err.println("没有查询到数据");
                 ArrayList<Object> records = new ArrayList<>();
                 data.put("records",records);
                 return httpRespMsg;

+ 12 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -618,10 +618,18 @@
                                         totalCost += Number(params[i].data.money);
                                     }
                                 }
-                                res = res +'<br/>'+ params[0].name+ '<br/>' + _this.$t('zong-ji') + ':' + 
-                                ((_this.permissions.countHours) ? totalTime.toFixed(1) + _this.$t('time.hour') : '') + 
-                                ((_this.permissions.countCost) ? totalCost.toFixed(2) + _this.$t('yuan') : '') + 
-                                "<br/>";
+                                if(_this.user.userNameNeedTranslate != 1) {
+                                    res = res +'<br/>'+ params[0].name+ '<br/>' + _this.$t('zong-ji') + ':' + 
+                                    ((_this.permissions.countHours) ? totalTime.toFixed(1) + _this.$t('time.hour') : '') + 
+                                    ((_this.permissions.countCost) ? totalCost.toFixed(2) + _this.$t('yuan') : '') + 
+                                    "<br/>";
+                                } else {
+                                    res = res +'<br/>'+ '' + '<br/>' + _this.$t('zong-ji') + ':' + 
+                                    ((_this.permissions.countHours) ? totalTime.toFixed(1) + _this.$t('time.hour') : '') + 
+                                    ((_this.permissions.countCost) ? totalCost.toFixed(2) + _this.$t('yuan') : '') + 
+                                    "<br/>";
+                                }
+                                
                                 return res;
                             }
                         },

+ 7 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/project/finance.vue

@@ -1149,14 +1149,6 @@ import { error } from 'dingtalk-jsapi';
                 this.http.post('/finance/getTimeCost', {yearMonth: this.date, assignNoProUser: this.assignNoProUser},
                 res => {
                     if (res.code == "ok") {
-                        // 待会删除
-                        // var lll = res.data.costList
-                        // var arrLists = []
-                        // for(var i = 0; i < 50; i++) {
-                        //     arrLists.push(lll[1])
-                        // }
-                        // res.data.costList = arrLists
-                        // 待会删除
 
                         for(var i in res.data.costList) {
                             if(i>20) {
@@ -1197,9 +1189,9 @@ import { error } from 'dingtalk-jsapi';
                         _this.myChart = myChart;
                         var option = {
                             title: {
-                                text: this.assignNoProUser?this.$t('costintotal') + totalMoneyCost + this.$t('yuan')
-                                    +(this.hasNoProjectUsers?","+$t('projectpersonnelcostincluded') + nopCost+this.$t('yuan'):"")
-                                    :this.$t('costintotal') + totalMoneyCost + this.$t('yuan'),
+                                text: _this.assignNoProUser ? _this.$t('costintotal') + totalMoneyCost + _this.$t('yuan')
+                                    +(_this.hasNoProjectUsers?","+ _this.$t('projectpersonnelcostincluded') + nopCost + _this.$t('yuan'):"")
+                                    : _this.$t('costintotal') + totalMoneyCost + _this.$t('yuan'),
                                 left:'left',
                             },
                             grid : {
@@ -1228,8 +1220,8 @@ import { error } from 'dingtalk-jsapi';
                             tooltip:{
                                 trigger:'axis',
                                 formatter: function (params,ticket,callback) {
-                                    var res = params[0].name + "<br/>"+this.$t('workcost')+" : " + params[0].data.value 
-                                    + this.$t('yuan')+"<br/>"+this.$t('screening.workTime')+" : " + params[0].data.time + this.$t('time.hour');
+                                    var res = params[0].name + "<br/>"+ _this.$t('workcost')+" : " + params[0].data.value 
+                                    + _this.$t('yuan')+"<br/>"+ _this.$t('screening.workTime')+" : " + params[0].data.time + _this.$t('time.hour');
                                     _this.params = params;
                                     return res;
                                 }
@@ -1243,11 +1235,11 @@ import { error } from 'dingtalk-jsapi';
                             yAxis: [{
                                 type : 'value',
                                 axisLabel: {
-                                    formatter:'{value} ('+this.$t('yuan')+')'
+                                    formatter:'{value} ('+ _this.$t('yuan')+')'
                                 }
                             }],
                             series: [{
-                                name: this.$t('screening.workTime')+'(h)',
+                                name: _this.$t('screening.workTime')+'(h)',
                                 type: 'bar',
                                 barMaxWidth: 30,
                                 data: yList,

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -259,7 +259,7 @@
             </div>
             <div class="line"><span>{{ $t('Worknumber') }}</span><span>{{userDetail.jobNumber}}</span></div>
             <div class="line"><span>{{ $t('lable.phone') }}</span><span>{{userDetail.phone}}</span></div>
-            <div class="line"><span>{{ $t('jiao-se') }}</span><span>{{roleArray[userDetail.role]}}</span></div>
+            <div class="line"><span>{{ $t('jiao-se') }}</span><span>{{userDetail.roleName}}</span></div>
             <div class="line"><span>{{ $t('lable.department') }}</span>
                 <span v-if="user.userNameNeedTranslate != 1">{{userDetail.departmentName}}</span>
                 <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='departmentName' :openid='userDetail.departmentName'></ww-open-data></span>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -727,7 +727,7 @@
             </div>
             <div class="line"><span>{{ $t('Worknumber') }}</span><span>{{userDetail.jobNumber}}</span></div>
             <div class="line"><span>{{ $t('lable.phone') }}</span><span>{{userDetail.phone}}</span></div>
-            <div class="line"><span>{{ $t('jiao-se') }}</span><span>{{roleArray[userDetail.role]}}</span></div>
+            <div class="line"><span>{{ $t('jiao-se') }}</span><span>{{userDetail.roleName}}</span></div>
             <div class="line"><span>{{ $t('lable.department') }}</span>
 
                 <span v-if="user.userNameNeedTranslate != 1">{{userDetail.departmentName}}</span>

+ 16 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1046,12 +1046,26 @@
         
         <!-- 按部门选择人员 -->
         <el-dialog :title="$t('defaultText.selectthepersonwhneedstofillinthereport')"  v-if="chooseParticipVisible" :visible.sync="chooseParticipVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
-            <el-input style="width:100%" v-model="deptMembDataText" :placeholder="$t('defaultText.pleaseEnterNametoSearch')"></el-input>
+            <el-input v-if="user.userNameNeedTranslate != 1" style="width:100%" v-model="deptMembDataText" :placeholder="$t('defaultText.pleaseEnterNametoSearch')"></el-input>
             <div class="tree" style="height:400px">
                 <el-scrollbar style="height:100%">
                 <el-tree :data="deptMembData" show-checkbox :props="defaultProps" node-key="id"
                     ref="chooseMembTree" @check-change="onTreeItemChange" :default-checked-keys="workForm.userId"
-                    highlight-current :filter-node-method="filterNode"></el-tree>
+                    highlight-current :filter-node-method="filterNode">
+                    <span class="custom-tree-node" slot-scope="{ node, data }">
+                        <span v-if="user.userNameNeedTranslate == '1'">
+                            <span v-if="node.data.children">
+                                <ww-open-data type='departmentName' :openid='node.label'></ww-open-data>
+                            </span>
+                            <span v-else>
+                                <ww-open-data type='userName' :openid='node.label'></ww-open-data>
+                            </span>
+                        </span>
+                        <span v-if="user.userNameNeedTranslate != '1'">
+                            {{ node.label }}
+                        </span>
+                    </span>    
+                </el-tree>
                 </el-scrollbar>
             </div>
             <div>{{$t('btn.choose')}}&nbsp;{{chosenMembCount}}&nbsp;{{$t('other.people')}}</div>