Browse Source

TimeType控制字段添加 无考勤无法填报
日报导出修改 企业微信同步
任务模板添加操作日志
八爪鱼TimeType控制字段添加

yurk 2 years ago
parent
commit
240273813f

+ 15 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/GroupTemplateController.java

@@ -4,9 +4,11 @@ package com.management.platform.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.GroupTemplate;
 import com.management.platform.entity.GroupTmpstages;
+import com.management.platform.entity.OperationRecord;
 import com.management.platform.entity.User;
 import com.management.platform.service.GroupTemplateService;
 import com.management.platform.service.GroupTmpstagesService;
+import com.management.platform.service.OperationRecordService;
 import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -16,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -37,6 +40,8 @@ public class GroupTemplateController {
     private GroupTmpstagesService groupTmpstagesService;
     @Resource
     private UserService userService;
+    @Resource
+    private OperationRecordService operationRecordService;
 
     @RequestMapping("/initData")
     public HttpRespMsg initData() {
@@ -104,7 +109,16 @@ public class GroupTemplateController {
 
     @RequestMapping("/deleteTemplate")
     public HttpRespMsg deleteTemplate(Integer id) {
-        groupTemplateService.removeById(id);
+        User user = userService.getById(request.getHeader("token"));
+        if(groupTemplateService.removeById(id)){
+            OperationRecord operationRecord=new OperationRecord();
+            operationRecord.setOperatorName(user.getName());
+            operationRecord.setModuleName("项目管理");
+            operationRecord.setCompanyId(user.getCompanyId());
+            operationRecord.setOperationTime(LocalDateTime.now());
+            operationRecord.setContent("删除了模板");
+            operationRecordService.save(operationRecord);
+        }
         return new HttpRespMsg();
     }
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -9,6 +9,8 @@ import com.management.platform.entity.vo.UserVO;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.service.impl.ExcelExportServiceImpl;
+import com.management.platform.service.impl.ReportServiceImpl;
+import com.management.platform.service.impl.UserServiceImpl;
 import com.management.platform.util.*;
 import com.qq.weixin.mp.aes.AesException;
 import com.qq.weixin.mp.aes.WXBizMsgCrypt;
@@ -415,6 +417,8 @@ public class WeiXinCorpController {
                     result.setJobType(jobType);
                     corpwxJobResultMapper.insert(result);
                     ExcelExportServiceImpl.corpwxJobCenter.put(jobId, result);
+                    ReportServiceImpl.corpwxJobCenter.put(jobId, result);
+                    UserServiceImpl.corpwxJobCenter.put(jobId, result);
                 }
             }
         } catch (Exception e) {

+ 14 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2022-09-30
+ * @since 2022-10-12
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -285,7 +285,7 @@ public class TimeType extends Model<TimeType> {
     private Integer mainProjectState;
 
     /**
-     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;
@@ -365,6 +365,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("max_report_time")
     private Float maxReportTime;
 
+    /**
+     * 是否同步泛微考勤打卡和出差
+     */
+    @TableField("sync_fanwei")
+    private Integer syncFanwei;
+
     /**
      * 员工自由选择审核人的方式下的审核层级:默认为2
      */
@@ -377,6 +383,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("stage_has_evtime")
     private Integer stageHasEvtime;
 
+    /**
+     * 考勤为0不可填报
+     */
+    @TableField("no_work_to_report")
+    private Integer noWorkToReport;
+
 
     @Override
     protected Serializable pkVal() {

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

@@ -644,9 +644,14 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             List<String> names = new ArrayList<>();
             BigDecimal totalCostMoney = new BigDecimal(0);
             for (Map<String, Object> map : list) {
-                if (tempMap.containsKey(map.get("user"))) {
+                if (tempMap.containsKey(((wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1)?("$userName="+(map.get("corpwxUserId")==null?"":map.get("corpwxUseid"))+"$"):map.get("user")))) {
                     //这个名字已经装进数组中了
-                    List<Map<String, Object>> tempList = tempMap.get(map.get("user"));
+                    List<Map<String, Object>> tempList;
+                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                         tempList = tempMap.get(("$userName="+(map.get("corpwxUserId")==null?"":map.get("corpwxUserId"))+"$"));
+                    }else {
+                         tempList = tempMap.get(map.get("user"));
+                    }
                     Map<String, Object> dataMap = new HashMap<>();
                     dataMap.put("project", map.get("project"));
                     BigDecimal money = (BigDecimal) map.getOrDefault("money", 0);
@@ -657,7 +662,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                     tempList.add(dataMap);
                 } else {
                     if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        names.add(map.get("corpwxUseid")==null?"":("$userName="+map.get("corpwxUseid")+"$"));
+                        names.add("$userName="+(map.get("corpwxUserId")==null?"":map.get("corpwxUserId"))+"$");
                     }else {
                         names.add((String)map.get("user"));
                     }

+ 10 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/GroupTemplateServiceImpl.java

@@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
@@ -42,6 +43,8 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
     @Resource
     GtemplateTaskService gtemplateTaskService;
     @Resource
+    OperationRecordMapper operationRecordMapper;
+    @Resource
     TaskMapper taskMapper;
 
     @Override
@@ -66,7 +69,13 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
                 template.setName(name);
                 template.setCreWithPro(automatically);
                 groupTemplateMapper.insert(template);
-
+                OperationRecord operationRecord=new OperationRecord();
+                operationRecord.setContent("新增了模板");
+                operationRecord.setOperationTime(LocalDateTime.now());
+                operationRecord.setCompanyId(user.getCompanyId());
+                operationRecord.setModuleName("项目管理");
+                operationRecord.setOperatorName(user.getName());
+                operationRecordMapper.insert(operationRecord);
                 //保存相关的任务列表名称
                 List<GroupTmpstages> tmpstagesList = new ArrayList<GroupTmpstages>();
                 for (Stages s : stagesList) {
@@ -101,9 +110,7 @@ public class GroupTemplateServiceImpl extends ServiceImpl<GroupTemplateMapper, G
                             }
                         });
                     }
-
                     gtemplateTaskService.saveBatch(gtemplateTaskList);
-
                 }
             }
         }

+ 18 - 14
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -70,6 +70,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 //    @Resource
 //    AsyncTaskExecutor asyncTaskExecutor;//注入线程池对象
     private final static Executor executor = Executors.newFixedThreadPool(3);//启用多线程
+    //用于控制线程锁
+    public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
     @Value("${wx.template_report_pass}")
     public String TEMPLATE_REPORT_PASS;
     @Value("${wx.template_report_reject}")
@@ -3909,10 +3911,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                  */
                 while (i < 10) {
                     Thread.sleep(300);
-                    CorpwxJobResult corpwxJobResult = corpwxJobResultMapper.selectById(jobId);
+                    CorpwxJobResult corpwxJobResult = corpwxJobCenter.get(jobId);
                     if (corpwxJobResult != null) {
                         if (corpwxJobResult.getErrCode() == 0) {
                             syncTranslationResult = wxCorpInfoService.getSyncTranslationResult(jobId);
+                            corpwxJobCenter.remove(jobId);
                         } else {
                             httpRespMsg.setError(corpwxJobResult.getErrMsg());
                             return httpRespMsg;
@@ -4679,7 +4682,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         LocalDate endDate = LocalDate.parse(dateStr,df);
         endDate=endDate.plusMonths(1);
         List<Map<String,Object>> resultList=reportMapper.getUploadThirdReportData(companyId,startDate,endDate);
-        String url="http://10.20.35.48:8009/dataservice/apiInfo/queryData/test/sap/sysLaborhour";
+        String url="http://116.236.135.252:18009/dataservice/apiInfo/queryData/test/sap/sysLaborhour";
         //认证的账号和密码
         HttpHeaders headers=new HttpHeaders();
         JSONObject param = new JSONObject();
@@ -4696,19 +4699,22 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             object.put("ZDEP",rl.get("departmentName"));
             array.add(object);
         });
-        param.put("IT_TAB",array);
-        HttpEntity<String> requestEntity = new HttpEntity<String>(param.toJSONString(), headers);
         String username = "WPG_GS";
         String password = "Sys_GS@12345";
         String authorization =username + ":" + password;
+        JSONObject header=new JSONObject();
+        String s = "Basic "+Base64.getEncoder().encodeToString(authorization.getBytes());
+        header.put("Authorization",s);
+        param.put("IT_TAB",array);
+        JSONObject item=new JSONObject();
+        item.put("headers",header);
+        item.put("body",param);
         //在请求头信息中携带Basic认证信息(这里才是实际Basic认证传递用户名密码的方式)
-        headers.set("authorization", "Basic " + Base64.getEncoder().encodeToString(authorization.getBytes()));
-        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
-        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
-        restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
-        //设置编码格式
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
+        headers.set("app_id","3bf356d5-bdba-48d4-b1f5-e91468beefa3");
+        headers.set("app_key","f2960f3bf3c5ca58ee0c6970c1242e87-1655272886142-371814");
+        headers.set("Authorization",s);
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        HttpEntity<String> requestEntity = new HttpEntity<String>(item.toJSONString(), headers);
         //过滤掉账号认证失败的时候抛出的401异常
         restTemplate.setErrorHandler(new DefaultResponseErrorHandler(){
             @Override
@@ -4722,10 +4728,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,requestEntity,String.class);
         if (response.getStatusCode() == HttpStatus.OK) {
             String resp = response.getBody();
-            System.out.println(resp);
-
             JSONObject obj = JSONObject.parseObject(resp);
-            if (obj.getString("code").equals("S")) {
+            if (obj.getString("msg").equals("SUCCESS")) {
                 httpRespMsg.data=obj;
                 return httpRespMsg;
             } else {

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

@@ -69,6 +69,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private String providerSecret;
     public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
     public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openId&lang=zh_CN";
+
+    //用于控制线程锁
+    public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
     @Resource
     private RedisUtil redisUtil;
 
@@ -1630,10 +1633,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                  */
                 while (i < 10) {
                     Thread.sleep(300);
-                    CorpwxJobResult corpwxJobResult = corpwxJobResultMapper.selectById(jobId);
+                    CorpwxJobResult corpwxJobResult = corpwxJobCenter.get(jobId);
                     if (corpwxJobResult != null) {
                         if (corpwxJobResult.getErrCode() == 0) {
                             syncTranslationResult = wxCorpInfoService.getSyncTranslationResult(jobId);
+                            corpwxJobCenter.remove(jobId);
                         } else {
                             httpRespMsg.setError(corpwxJobResult.getErrMsg());
                             return httpRespMsg;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DepartmentMapper.xml

@@ -37,7 +37,7 @@
 
     <!--根据人员获取成本-->
     <select id="getCostByUser" resultType="java.util.Map">
-        SELECT a.id as id, a.name AS user,a.corpwx_userid as corpwxUserid, a.job_number as jobNumber, c.project_name AS project, SUM(b.working_time) AS time, SUM(b.cost) AS
+        SELECT a.id as id, a.name AS user,a.corpwx_userid as corpwxUserId, a.job_number as jobNumber, c.project_name AS project, SUM(b.working_time) AS time, SUM(b.cost) AS
         money
         FROM user AS a
         LEFT JOIN report AS b ON a.id = b.creator_id

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ParticipationMapper.xml

@@ -17,16 +17,16 @@
     <!--根据项目id获取所有参与者id和name-->
     <select id="getParticipator" resultType="java.util.Map">
         SELECT a.user_id AS id, b.name
-        FROM participation AS a
-        LEFT JOIN user AS b ON a.user_id = b.id
+        FROM participation  a
+        LEFT JOIN user  b ON a.user_id = b.id
         WHERE a.project_id = #{projectId}
     </select>
 
 
     <select id="getAllParticipator" resultType="java.util.Map">
         SELECT a.user_id AS id,b.corpwx_userid as corpwxUserId, b.name,a.project_id as projectId
-        FROM participation AS a
-        LEFT JOIN user AS b ON a.user_id = b.id
+        FROM participation a
+        LEFT JOIN user b ON a.user_id = b.id
         WHERE a.project_id in
             <foreach collection="projectIdList" open="(" close=")" separator="," item="item">
                 #{item}

File diff suppressed because it is too large
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 39 - 8
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -1,23 +1,23 @@
 package com.management.platform.entity;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import java.math.BigDecimal;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.List;
-
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-08-24
+ * @since 2022-10-12
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -285,7 +285,7 @@ public class TimeType extends Model<TimeType> {
     private Integer mainProjectState;
 
     /**
-     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核
+     * 日报的审核类型, 0-项目审核人审核,1-分组负责人审核,2-先分组负责人审核再项目负责人(PM)审核;3-员工自由选择审批人
      */
     @TableField("report_audit_type")
     private Integer reportAuditType;
@@ -359,6 +359,37 @@ public class TimeType extends Model<TimeType> {
     @TableField(exist = false)
     private List<User> userList;
 
+    /**
+     * 日报填报时长上限,默认12小时
+     */
+    @TableField("max_report_time")
+    private Float maxReportTime;
+
+    /**
+     * 是否同步泛微考勤打卡和出差
+     */
+    @TableField("sync_fanwei")
+    private Integer syncFanwei;
+
+    /**
+     * 员工自由选择审核人的方式下的审核层级:默认为2
+     */
+    @TableField("audit_level")
+    private Integer auditLevel;
+
+    /**
+     * 任务列表是否有预估工时功能
+     */
+    @TableField("stage_has_evtime")
+    private Integer stageHasEvtime;
+
+    /**
+     * 考勤为0不可填报
+     */
+    @TableField("no_work_to_report")
+    private Integer noWorkToReport;
+
+
     @Override
     protected Serializable pkVal() {
         return this.companyId;

File diff suppressed because it is too large
+ 6 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/TimeTypeMapper.xml