Sfoglia il codice sorgente

国际化的时区配置

seyason 2 anni fa
parent
commit
6a7359f8b2
14 ha cambiato i file con 197 aggiunte e 15 eliminazioni
  1. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LocaleInformationController.java
  2. 5 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  3. 3 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  4. 4 7
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  5. 8 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java
  6. 41 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LocaleInformation.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LocaleInformationMapper.java
  8. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/LocaleInformationService.java
  9. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LocaleInformationServiceImpl.java
  10. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  11. 27 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/TimeZoneUtil.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  13. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyMapper.xml
  14. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LocaleInformationMapper.xml

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LocaleInformationController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-09-15
+ */
+@RestController
+@RequestMapping("/locale-information")
+public class LocaleInformationController {
+
+}
+

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

@@ -301,9 +301,13 @@ public class TaskController {
         if (task.getTaskStatus() == 0) {
             task.setTaskStatus(1);
             isFinishTask = true;
-            task.setFinishDate(LocalDate.now());
             //计算排序,需要移动到最后
             Task old = taskService.getById(task.getId());
+            if (old.getFinishDate() == null) {
+                //仅对没有完成日期的任务设置完成日期
+                task.setFinishDate(LocalDate.now());
+            }
+
             if (task.getParentTid() == null) {
                 QueryWrapper<Task> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("stages_id", old.getStagesId()).isNull("parent_tid").orderByDesc("seq").last("limit 1");

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -14,6 +14,7 @@ import com.management.platform.service.TaskService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -148,7 +149,7 @@ public class TaskGroupController {
      * @return
      */
     @RequestMapping("/listMyJoinGroup")
-    public HttpRespMsg listMyJoinGroup(TaskGroup item) {
+    public HttpRespMsg listMyJoinGroup(TaskGroup item, @RequestParam(required = false, defaultValue = "0") Integer isSubstitude) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         Integer projectId = item.getProjectId();
@@ -156,7 +157,7 @@ public class TaskGroupController {
         QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
         queryWrapper.eq("project_id", projectId);
         TimeType timeType = timeTypeMapper.selectById(project.getCompanyId());
-        if (timeType.getReportAuditType() == 0) {
+        if (timeType.getReportAuditType() == 0 || isSubstitude == 1) {
             msg.data = taskGroupService.list(queryWrapper);
         } else {
             List<GroupParticipator> groupParticipatorList = groupParticipatorMapper.selectList(new QueryWrapper<GroupParticipator>().eq("user_id", token));

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

@@ -370,7 +370,7 @@ public class WeiXinCorpController {
                     String corpId = jsonObject.getString("AuthCorpId");
                     String corpWxUserId = jsonObject.getString("UserID");
                     WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
-                    if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
+                    if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
                         Integer companyId = wxCorpInfo.getCompanyId();
                         SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
                         //通过通讯录secret获取到员工姓名
@@ -416,7 +416,7 @@ public class WeiXinCorpController {
                     WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
                     Integer companyId = wxCorpInfo.getCompanyId();
                     //只有授权通讯录同步的,才有机会更新部门或者上级
-                    if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
+                    if (!StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
                         String remoteCorpConcactAccessToken = getRemoteCorpConcactAccessToken(wxCorpInfo);
                         String curCorpAccessToken = getCorpAccessToken(wxCorpInfo);
                         Integer curUserWXDeptid = 0;
@@ -476,7 +476,7 @@ public class WeiXinCorpController {
                     Integer deptId = jsonObject.getInt("Id");
                     Integer parentDeptId = jsonObject.getInt("ParentId");
                     WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
-                    if (wxCorpInfo != null && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
+                    if (wxCorpInfo != null && !StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
                         String remoteCorpConcactAccessToken = getRemoteCorpConcactAccessToken(wxCorpInfo);
                         Integer companyId = wxCorpInfo.getCompanyId();
                         Department department = new Department();
@@ -501,7 +501,7 @@ public class WeiXinCorpController {
                     Integer deptId = jsonObject.getInt("Id");
                     Integer parentDeptId = jsonObject.getInt("ParentId");
                     WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
-                    if (wxCorpInfo != null && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
+                    if (wxCorpInfo != null && !StringUtils.isEmpty(wxCorpInfo.getContactSecret()) && !StringUtils.isEmpty(wxCorpInfo.getContactSecret())) {
                         if (parentDeptId != null) {
                             //发生父部门的结构变化了
                             Department department = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", wxCorpInfo.getCompanyId()).eq("corpwx_deptid", deptId));
@@ -531,13 +531,10 @@ public class WeiXinCorpController {
                                 System.err.println("同步获取部门详情报错:"+resultObj.toString());
                             }
                         }
-
                     }
-
                 }
             }
         } catch (Exception e) {
-            // TODO
             // 解密失败,失败原因请查看异常
             e.printStackTrace();
         }

+ 8 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-07
+ * @since 2022-09-15
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -50,7 +50,7 @@ public class Company extends Model<Company> {
     private LocalDateTime expirationDate;
 
     /**
-     * 选择的套餐(单位:/年)
+     * 是否签约
      */
     @TableField("set_meal")
     private Integer setMeal;
@@ -115,13 +115,18 @@ public class Company extends Model<Company> {
     @TableField("package_finance")
     private Integer packageFinance;
 
-
     /**
      * 供应商模块
      */
     @TableField("package_provider")
     private Integer packageProvider;
 
+    /**
+     * 是否是国际化版本
+     */
+    @TableField("is_international")
+    private Integer isInternational;
+
 
     @Override
     protected Serializable pkVal() {

+ 41 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LocaleInformation.java

@@ -0,0 +1,41 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class LocaleInformation extends Model<LocaleInformation> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    @TableField("language")
+    private String language;
+
+    @TableField("timezone")
+    private String timezone;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LocaleInformationMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.LocaleInformation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-09-15
+ */
+public interface LocaleInformationMapper extends BaseMapper<LocaleInformation> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/LocaleInformationService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.LocaleInformation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-09-15
+ */
+public interface LocaleInformationService extends IService<LocaleInformation> {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LocaleInformationServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.LocaleInformation;
+import com.management.platform.mapper.LocaleInformationMapper;
+import com.management.platform.service.LocaleInformationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-09-15
+ */
+@Service
+public class LocaleInformationServiceImpl extends ServiceImpl<LocaleInformationMapper, LocaleInformation> implements LocaleInformationService {
+
+}

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

@@ -137,6 +137,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private ExpenseTypeService expenseTypeService;
     @Resource
     private DepartmentOtherManagerMapper departmentOtherManagerMapper;
+    @Resource
+    private LocaleInformationMapper localeInformationMapper;
     //登录网页端
     @Override
     public HttpRespMsg loginAdmin(String username, String password) {
@@ -452,6 +454,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     u.put("plateMap",map);
                 }
             }
+            if (companyMapper.selectById(companyId).getIsInternational() == 1) {
+                //国际化版本
+                LocaleInformation locale = localeInformationMapper.selectById(companyId);
+                TimeZone curZone = TimeZone.getTimeZone(locale.getTimezone());
+                int offsetSeconds = (curZone.getRawOffset() - TimeZone.getTimeZone("GMT+8").getRawOffset())/1000;
+                //时区转换,默认数据库存的是GMT+8
+                DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm", Locale.CHINA);
+                for (Map user : list) {
+                    String createTime = (String)user.get("createTime");
+                    LocalDateTime time = LocalDateTime.parse(createTime, dtf);
+                    time = time.plusSeconds(offsetSeconds);
+                    user.put("createTime", dtf.format(time));
+                }
+            }
             resultMap.put("records", list);
             resultMap.put("total", total);
             httpRespMsg.data = resultMap;

+ 27 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/TimeZoneUtil.java

@@ -0,0 +1,27 @@
+package com.management.platform.util;
+
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class TimeZoneUtil {
+
+    public static void main(String[] args) {
+        System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));
+        System.out.println(TimeZone.getDefault());
+        System.out.println(TimeZone.getTimeZone("GMT+08:00"));
+
+        TimeZone timeZone = TimeZone.getTimeZone("Europe/London");
+        System.out.println(1.0*timeZone.getRawOffset()/3600/1000);
+        double timeValue = 1.0*timeZone.getRawOffset()/3600/1000;
+        String hourValue = (timeValue>0?"+":"")+(int)timeValue;
+        int minInt = Math.abs((int)((timeValue - (int)timeValue)*60));
+        String minValue = (minInt<10?"0":"")+minInt;
+        System.out.println("GMT"+hourValue + ":"+ minValue);
+        System.out.println(timeZone.getDisplayName()); // 中国标准时间
+        System.out.println(timeZone.getDisplayName(Locale.ENGLISH)); // China Standard Time
+    }
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:3306/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: HuoshiDB@2022
     hikari:

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

@@ -20,11 +20,12 @@
         <result column="package_simple" property="packageSimple" />
         <result column="package_finance" property="packageFinance" />
         <result column="package_provider" property="packageProvider" />
+        <result column="is_international" property="isInternational" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance, package_provider
+        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance, package_provider, is_international
     </sql>
 
 </mapper>

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LocaleInformationMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.LocaleInformationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.LocaleInformation">
+        <id column="company_id" property="companyId" />
+        <result column="language" property="language" />
+        <result column="timezone" property="timezone" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, language, timezone
+    </sql>
+
+</mapper>