Ver código fonte

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

ggooalice 2 anos atrás
pai
commit
ea6a989421
27 arquivos alterados com 533 adições e 34 exclusões
  1. 12 0
      fhKeeper/formulahousekeeper/inva_4_tivo/css/index.css
  2. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/bannar1.gif
  3. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/bannar1.jpg
  4. BIN
      fhKeeper/formulahousekeeper/inva_4_tivo/image/gongshi.jpg
  5. 6 2
      fhKeeper/formulahousekeeper/inva_4_tivo/index.html
  6. 16 2
      fhKeeper/formulahousekeeper/inva_4_tivo/js/index.js
  7. 11 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DingDingController.java
  8. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  9. 9 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportAuditLogController.java
  10. 9 9
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java
  11. 39 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportLogController.java
  12. 82 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportLog.java
  13. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  14. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  15. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportLogMapper.java
  16. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  17. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportLogService.java
  18. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  19. 7 10
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  20. 65 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  21. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportLogServiceImpl.java
  22. 100 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  23. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  24. 72 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  25. 22 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportLogMapper.xml
  26. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  27. BIN
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/费用报销导入模板.xlsx

+ 12 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/css/index.css

@@ -71,6 +71,7 @@
 .product {
     width: 100%;
     position: fixed;
+    z-index: 10;
     top: 6.25rem;
     left: 0;
     background: #fff;
@@ -767,3 +768,14 @@ body {
     width: 100%;
 }
 
+.mengban {
+    width: 100%;
+    height: 200px;
+    background: #000;
+    opacity: .4;
+    position: absolute;
+    top: 148px;
+    left: 0;
+    z-index: 1;
+}
+

BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/bannar1.gif


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/bannar1.jpg


BIN
fhKeeper/formulahousekeeper/inva_4_tivo/image/gongshi.jpg


+ 6 - 2
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -86,7 +86,8 @@
     
     <!-- 轮播图 -->
     <div class="bannar">
-        <img src="./image/bannar1.jpg" style="width: 100%;" alt="">
+        <!-- <img src="./image/bannar1.jpg" style="width: 100%;" alt=""> -->
+        <img src="./image/bannar1.gif" style="width: 100%;" alt="">
     </div>
 
     <!-- 系统管理 -->
@@ -96,7 +97,7 @@
             <div class="connont">
                 <div class="manContent">
                     <img id="jiesaoImg" src="./image/gsgj.png" alt="" style="padding-top: 300px;">
-                    <p id="jiesaoP" style="opacity: 0;">智能系统管理  你的<span>工时管家</span></p>
+                    <p id="jiesaoP" style="opacity: 0;">化繁为简  只需一个<span>工时管家</span></p>
                 </div>
             </div>
         </div>
@@ -284,6 +285,7 @@
             <h2>来自客户的认可</h2>
             <div class="conImg">
                 <div class="conImgCon">
+                    <div class="mengban"></div>
                     <img src="./image/kehu1.jpg" alt="">
                     <div class="conImgConImg">
                         <img src="./image/ions/chengdu.png" alt="">
@@ -301,6 +303,7 @@
                     </div>
                 </div>
                 <div class="conImgCon">
+                    <div class="mengban"></div>
                     <img src="./image/kehu2.jpg" alt="">
                     <div class="conImgConImg">
                         <img src="./image/ions/xinchun.png" alt="">
@@ -317,6 +320,7 @@
                     </div>
                 </div>
                 <div class="conImgCon">
+                    <div class="mengban"></div>
                     <img src="./image/kehu3.jpg" alt="">
                     <div class="conImgConImg">
                         <img src="./image/ions/tanggu.png" alt="">

+ 16 - 2
fhKeeper/formulahousekeeper/inva_4_tivo/js/index.js

@@ -1,6 +1,19 @@
 // 产品鼠标移入移出
-$('#productHov').hover(function () {$("#product").show()},function () {$("#product").hide()})
-$('#product').hover(function () {$("#product").show()},function () {$("#product").hide()})
+let fls = true
+$('#productHov').hover(function () {$("#product").show()},function () {
+    setTimeout(function() {
+        if(fls) {
+            $("#product").hide()
+        }
+    }, 200)
+})
+$('#product').hover(function () {
+    fls = false
+    $("#product").show()
+},function () {
+    fls = true
+    $("#product").hide()
+})
 
 // 导航下划线
 $('.aus li').hover(function () {
@@ -9,6 +22,7 @@ $('.aus li').hover(function () {
 },function () {
     let i = $(this).index()
     $(".aus li").eq(i).removeClass('tils')
+
 })
 
 $('.auss li').hover(function () {

Diferenças do arquivo suprimidas por serem muito extensas
+ 11 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DingDingController.java


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

@@ -496,5 +496,13 @@ public class ProjectController {
     public HttpRespMsg exportReportTimelinessRate(HttpServletRequest request,String startDate,String endDate){
         return projectService.exportReportTimelinessRate(request,startDate,endDate);
     }
+    @RequestMapping("/getWaitingReviewList")
+    public HttpRespMsg getWaitingReviewList(HttpServletRequest request,Integer stateKey,String userId,Integer departmentId,Integer projectId,Integer pageIndex,Integer pageSize,String startDate,String endDate){
+        return projectService.getWaitingReviewList(request,stateKey,userId,departmentId,projectId,pageIndex,pageSize,startDate,endDate);
+    }
+    @RequestMapping("/exportWaitingReviewList")
+    public HttpRespMsg exportWaitingReviewList(HttpServletRequest request,Integer stateKey,String userId,Integer departmentId,Integer projectId,String startDate,String endDate){
+        return projectService.exportWaitingReviewList(request,stateKey,userId,departmentId,projectId,startDate,endDate);
+    }
 }
 

+ 9 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportAuditLogController.java

@@ -93,8 +93,15 @@ public class ReportAuditLogController {
         User user = userMapper.selectById(token);
         HttpRespMsg msg = new HttpRespMsg();
         QueryWrapper<ReportAuditLog> queryWrapper = new QueryWrapper<>();
-        //每个人看自己的
-        queryWrapper.eq("company_id", companyId).eq("audit_channel", 1).eq("user_id", user.getId()).orderByDesc("indate");
+        //检查权限,是否可以看全部的
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部审核记录");
+        if (functionList.size() == 0) {
+            //每个人看自己的
+            queryWrapper.eq("company_id", companyId).eq("audit_channel", 1).eq("user_id", user.getId()).orderByDesc("indate");
+        } else {
+            queryWrapper.eq("company_id", companyId).eq("audit_channel", 1).orderByDesc("indate");
+        }
+
         IPage<ReportAuditLog> iPage = reportAuditLogMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
         List<ReportAuditLog> list = iPage.getRecords();

+ 9 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java

@@ -87,9 +87,9 @@ public class ReportExtraDegreeController {
                 List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
                         .eq("company_id", user.getCompanyId())
                         .and(wrapper->wrapper.eq("associate_degrees", id)
-                                .or().like("associate_degrees", id+",%")
-                                .or().like("associate_degrees", "%,"+id+",%")
-                                .or().like("associate_degrees", "%,"+id)));
+                                .or().likeRight("associate_degrees", id+",")
+                                .or().like("associate_degrees", ","+id+",")
+                                .or().likeLeft("associate_degrees", ","+id)));
                 if (existsProjects.size() > 0) {
                     List<Project> updateList = new ArrayList<>();
                     for (Project p : existsProjects) {
@@ -129,9 +129,9 @@ public class ReportExtraDegreeController {
         //检查是否已经被使用
         List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
                         .eq("associate_degrees", id)
-                        .or().like("associate_degrees", id+",%")
-                        .or().like("associate_degrees", "%,"+id+",%")
-                        .or().like("associate_degrees", "%,"+id));
+                        .or().likeRight("associate_degrees", id+",")
+                        .or().like("associate_degrees", ","+id+",")
+                        .or().likeLeft("associate_degrees", ","+id));
         if (existsProjects.size() > 0) {
             String names = existsProjects.stream().map(Project::getProjectName).collect(Collectors.joining(","));
             msg.setError("该数据已经被以下项目关联,无法删除:"+names);
@@ -156,9 +156,9 @@ public class ReportExtraDegreeController {
             QueryWrapper<Project> queryWrapper=new QueryWrapper<>();
             queryWrapper.in("associate_degrees", list);
             list.forEach(li->{
-                queryWrapper.or().like("associate_degrees", li+",%")
-                        .or().like("associate_degrees", "%,"+li+",%")
-                        .or().like("associate_degrees", "%,"+li);
+                queryWrapper.or().likeRight("associate_degrees", li+",")
+                        .or().like("associate_degrees", ","+li+",")
+                        .or().likeLeft("associate_degrees", ","+li);
             });
             List<Project> existsProjects = projectMapper.selectList(queryWrapper);
             if (existsProjects.size() > 0) {

+ 39 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportLogController.java

@@ -0,0 +1,39 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.ReportLog;
+import com.management.platform.service.ReportLogService;
+import com.management.platform.service.ReportService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-06-24
+ */
+@RestController
+@RequestMapping("/report-log")
+public class ReportLogController {
+
+    @Resource
+    private ReportLogService reportLogService;
+
+    @RequestMapping("/get")
+    public HttpRespMsg get(String creatorId, String createDate) {
+        HttpRespMsg msg = new HttpRespMsg();
+        List<ReportLog> list = reportLogService.list(new QueryWrapper<ReportLog>().eq("creator_id", creatorId).eq("create_date", createDate));
+        msg.data = list;
+        return msg;
+    }
+}
+

+ 82 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportLog.java

@@ -0,0 +1,82 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportLog extends Model<ReportLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 日报创建人
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 日报所属日期
+     */
+    @TableField("create_date")
+    private LocalDate createDate;
+
+    /**
+     * 相关项目日报id
+     */
+    @TableField("report_ids")
+    private String reportIds;
+
+    /**
+     * 日志内容
+     */
+    @TableField("msg")
+    private String msg;
+
+    /**
+     * 操作人
+     */
+    @TableField("operator_id")
+    private String operatorId;
+
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    @TableField("operate_date")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    private LocalDateTime operateDate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import java.util.List;
  * </p>
  *
  * @author Seyason
- * @since 2022-06-23
+ * @since 2022-06-24
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -254,6 +254,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("work_content_state")
     private Integer workContentState;
 
+    /**
+     * 0-不可提前填报 1-可提前填报
+     */
+    @TableField("fill_ahead")
+    private Integer fillAhead;
+
     @TableField(exist = false)
     private List<User> userList;
 

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -96,4 +96,12 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getUserWorkingTimeList(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start, Integer size);
 
     long findCountWithUser(String userId, Integer companyId, String startDate, String endDate, Integer projectId, Integer start,Integer size);
+
+    List<Map<String, Object>> getWaitingReviewListByDepartment(Integer companyId, String userId, Integer departmentId,Integer start,Integer size,String startDate,String endDate);
+
+    List<Map<String, Object>> getWaitingReviewListByProject(Integer companyId, String userId, Integer projectId,Integer start,Integer size,String startDate,String endDate);
+
+    long findCountWithDepartment(Integer companyId, String userId, Integer departmentId, Integer start, Integer size,String startDate,String endDate);
+
+    long findCountWithProject(Integer companyId, String userId, Integer projectId, Integer start, Integer size,String startDate,String endDate);
 }

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

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

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

@@ -139,4 +139,8 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getUserReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId, String userId,Integer pageIndex,Integer pageSize);
 
     HttpRespMsg exportReportTimelinessRate(HttpServletRequest request, String startDate, String endDate);
+
+    HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId, Integer departmentId,Integer projectId,Integer pageIndex,Integer pageSize,String startDate,String endDate);
+
+    HttpRespMsg exportWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId, Integer departmentId, Integer projectId,String startDate,String endDate);
 }

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

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

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

@@ -1539,6 +1539,7 @@ public class DingDingServiceImpl implements DingDingService {
         userMapper.delete(new QueryWrapper<User>().eq("company_id", companyId));
         sysRoleMapper.delete(new QueryWrapper<SysRole>().eq("company_id", companyId));
         //sysRoleFunction和sysRoleModule表会级联删除
+        timeTypeMapper.deleteById(companyId);
         projectBasecostSettingMapper.delete(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId));
         companyMapper.deleteById(companyId);
         return msg;

+ 7 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -64,11 +64,12 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     @Override
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
         HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(userId);
         boolean isNew = false;
         if (sheet.getId() == null) {
             isNew = true;
             //检查code不能重复
-            Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("code", sheet.getCode()));
+            Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("company_id", user.getCompanyId()).eq("code", sheet.getCode()));
             if (num > 0) {
                 msg.setError("票据编号已存在");
                 return msg;
@@ -76,8 +77,6 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         }
         sheet.setOperatorId(userId);//设置操作人id
         JSONArray array = JSONArray.parseArray(items);
-//        sheet.setOwnerId(userId);
-        User user = userMapper.selectById(userId);
         sheet.setOwnerName(userMapper.selectById(sheet.getOwnerId()).getName());
         sheet.setCompanyId(user.getCompanyId());
         if (isNew) {
@@ -333,10 +332,6 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                     if(codeCell==null){
                         continue;
                     }
-                    if(happenDateCell.toString().trim().equals("")||happenDateCell==null){
-                        msg.setError("费用日期不能为空");
-                        return msg;
-                    }
                     ExpenseItem expenseItem = new ExpenseItem();
                     System.out.println(codeCell.getStringCellValue());
                     Optional<Project> project = projectList.stream().filter(pro ->(StringUtils.isEmpty(pro.getProjectCode())?"":pro.getProjectCode()).equals(codeCell.getStringCellValue())
@@ -347,9 +342,11 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
                         throw new Exception("项目编号/项目名称为[" + codeCell.getStringCellValue() + "]的项目不存在");
                     }
                     expenseItem.setExpenseId(expenseSheet.getId());
-                    LocalDate happenDate = Instant.ofEpochMilli(happenDateCell.getDateCellValue().getTime())
-                            .atZone(ZoneId.systemDefault()).toLocalDate();
-                    expenseItem.setHappenDate(String.valueOf(happenDate));
+                    if(!happenDateCell.toString().trim().equals("")&&happenDateCell!=null){
+                        LocalDate happenDate = Instant.ofEpochMilli(happenDateCell.getDateCellValue().getTime())
+                                .atZone(ZoneId.systemDefault()).toLocalDate();
+                        expenseItem.setHappenDate(String.valueOf(happenDate));
+                    }
                     if(invoiceTypeCell!=null){
                         switch (invoiceTypeCell.getStringCellValue()) {
                             case "增值税专用发票":

+ 65 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2094,7 +2094,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
                 //处理人员
                 if (inchargerCell != null) {
-                    String inchargerName = inchargerCell.getStringCellValue();
+                    String inchargerName = inchargerCell.getStringCellValue().trim();
                     if (!StringUtils.isEmpty(inchargerName)) {
                         Optional<User> first = userList.stream().filter(u -> u.getName().equals(inchargerName)).findFirst();
                         if (first.isPresent()) {
@@ -2152,9 +2152,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 //参与人
                 if (participatorCell != null) {
-                    String part = participatorCell.getStringCellValue();
+                    String part = participatorCell.getStringCellValue().trim();
                     //将项目负责人也添加到参与人当中来
-                    String incharger = inchargerCell.getStringCellValue();
+                    String incharger = inchargerCell.getStringCellValue().trim();
                     if (!StringUtils.isEmpty(part)) {
                         String[] partSplit = part.split("\\,|\\,");
                         if(!StringUtils.isEmpty(incharger)){
@@ -3191,6 +3191,68 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId, Integer departmentId,Integer projectId,Integer pageIndex,Integer pageSize,String startDate,String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<Map<String,Object>> list;
+        Integer size;
+        Integer start;
+        if(pageIndex!=null&&pageSize!=null){
+            size=pageSize;
+            start=(pageIndex-1)*size;
+        }else {
+            size=null;
+            start=null;
+        }
+        long total;
+        if(stateKey==0){
+            list=projectMapper.getWaitingReviewListByDepartment(user.getCompanyId(),userId,departmentId,start,size,startDate,endDate);
+            total=projectMapper.findCountWithDepartment(user.getCompanyId(),userId,departmentId,null,null,startDate,endDate);
+        }else {
+            list=projectMapper.getWaitingReviewListByProject(user.getCompanyId(),userId,projectId,start,size,startDate,endDate);
+            total=projectMapper.findCountWithProject(user.getCompanyId(),userId,projectId,null,null,startDate,endDate);
+        }
+        HashMap map=new HashMap();
+        map.put("total",total);
+        map.put("result",list);
+        msg.data=map;
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg exportWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId, Integer departmentId, Integer projectId,String startDate,String endDate) {
+        HttpRespMsg msg = getWaitingReviewList(request, stateKey, userId, departmentId, projectId, null, null,startDate,endDate);
+        HashMap resultmap= (HashMap) msg.data;
+        List<Map<String,Object>> list= (List<Map<String, Object>>) resultmap.get("result");
+        List<List<String>> dataList=new ArrayList<>();
+        String[] s;
+        String fileName;
+        if(stateKey==0){
+            s= new String[]{"人员", "部门", "待审核数量"};
+            fileName = "人员部门待审核统计_"+System.currentTimeMillis();
+        }else {
+            s= new String[]{"人员", "项目", "待审核数量"};
+            fileName = "人员项目待审核统计_"+System.currentTimeMillis();
+        }
+        dataList.add(Arrays.asList(s));
+        for (Map<String, Object> map : list) {
+            List<String> item=new ArrayList<>();
+            item.add(String.valueOf(map.get("userName")));
+            if(stateKey==0){
+                item.add(String.valueOf(map.get("departmentName")));
+            }else {
+                item.add(String.valueOf(map.get("projectName")));
+            }
+            item.add(String.valueOf(map.get("num")));
+            dataList.add(item);
+        }
+        //生成excel文件导出
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
+        msg.data = resp;
+        return msg;
+    }
+
 
     private List<Department> getSubDepts(Department dp, List<Department> list) {
         List<Department> collect = list.stream().filter(l -> dp.getDepartmentId().equals(l.getSuperiorId())).collect(Collectors.toList());

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ReportLog;
+import com.management.platform.mapper.ReportLogMapper;
+import com.management.platform.service.ReportLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-06-24
+ */
+@Service
+public class ReportLogServiceImpl extends ServiceImpl<ReportLogMapper, ReportLog> implements ReportLogService {
+
+}

+ 100 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -83,6 +83,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     private ReportService reportService;
     @Resource
+    private ReportLogService reportLogService;
+    @Resource
     ReportExtraDegreeMapper reportExtraDegreeMapper;
     @Resource
     WxCorpInfoService wxCorpInfoService;
@@ -152,6 +154,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private ReportAlogMembdateMapper reportAlogMembdateMapper;
     @Resource
     private GroupParticipatorMapper groupParticipatorMapper;
+    @Resource
+    private ReportLogMapper reportLogMapper;
 
     @Value(value = "${upload.path}")
     private String path;
@@ -758,10 +762,98 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         //异步下载图片
         loadPicFromCorpWXServer(companyId, reportList);
-
+        saveFillReportLog(reportList);
         return httpRespMsg;
     }
 
+    //保存提交日报的记录
+    private void saveFillReportLog(List<Report> reportList) {
+        Report r = reportList.get(0);
+        List<ReportLog> addLogList = new ArrayList<>();
+        if (r.getState() == 0) {
+            Integer companyId = r.getCompanyId();
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+            //提交待审核
+            for (Report report : reportList) {
+                ReportLog log = new ReportLog();
+                log.setCreatorId(report.getCreatorId());
+                log.setCreateDate(report.getCreateDate());
+                //去重
+                Optional<ReportLog> oldLog = addLogList.stream().filter(add -> add.getCreateDate().isEqual(log.getCreateDate()) && add.getCreatorId().equals(log.getCreatorId())).findFirst();
+                if (!oldLog.isPresent()) {
+                    log.setOperatorId(report.getFillUserid()==null?report.getCreatorId():report.getFillUserid());
+                    Optional<User> first = userList.stream().filter(u -> u.getId().equals(log.getCreatorId())).findFirst();
+                    String username = "";
+                    if (first.isPresent()) {
+                        username = first.get().getName();
+                    }
+                    log.setMsg(username+"提交了日报");
+                    log.setCompanyId(companyId);
+                    log.setReportIds(report.getId()+"");
+                    addLogList.add(log);
+                } else {
+                    ReportLog reportLog = oldLog.get();
+                    reportLog.setReportIds(reportLog.getReportIds()+","+report.getId());
+                }
+            }
+            reportLogService.saveBatch(addLogList);
+        }
+    }
+
+    //保存审核日报的记录
+    private void saveApproveReportLog(List<Report> reportList, String operatorId, String opName) {
+        Report r = reportList.get(0);
+        List<ReportLog> addLogList = new ArrayList<>();
+        Integer companyId = r.getCompanyId();
+        //操作审核通过
+        for (Report report : reportList) {
+            ReportLog log = new ReportLog();
+            log.setCreatorId(report.getCreatorId());
+            log.setCreateDate(report.getCreateDate());
+            //去重
+            Optional<ReportLog> oldLog = addLogList.stream().filter(add -> add.getCreateDate().isEqual(log.getCreateDate()) && add.getCreatorId().equals(log.getCreatorId())).findFirst();
+            if (!oldLog.isPresent()) {
+                log.setOperatorId(operatorId);
+                log.setMsg(opName+"审核通过了日报");
+                log.setCompanyId(companyId);
+                log.setReportIds(report.getId()+"");
+                addLogList.add(log);
+            } else {
+                ReportLog reportLog = oldLog.get();
+                reportLog.setReportIds(reportLog.getReportIds()+","+report.getId());
+            }
+        }
+        reportLogService.saveBatch(addLogList);
+    }
+
+    //保存审核日报的记录
+    private void saveDenyReportLog(List<Report> reportList, String operatorId, String opName,  String reason) {
+        Report r = reportList.get(0);
+        List<ReportLog> addLogList = new ArrayList<>();
+        Integer companyId = r.getCompanyId();
+        //操作审核通过
+        for (Report report : reportList) {
+            ReportLog log = new ReportLog();
+            log.setCreatorId(report.getCreatorId());
+            log.setCreateDate(report.getCreateDate());
+            //去重
+            Optional<ReportLog> oldLog = addLogList.stream().filter(add -> add.getCreateDate().isEqual(log.getCreateDate()) && add.getCreatorId().equals(log.getCreatorId())).findFirst();
+            if (!oldLog.isPresent()) {
+                log.setOperatorId(operatorId);
+                log.setMsg(opName+"驳回了日报, 原因: "+(StringUtils.isEmpty(reason)?"无":reason));
+                log.setCompanyId(companyId);
+                log.setReportIds(report.getId()+"");
+                addLogList.add(log);
+            } else {
+                ReportLog reportLog = oldLog.get();
+                reportLog.setReportIds(reportLog.getReportIds()+","+report.getId());
+            }
+        }
+        reportLogService.saveBatch(addLogList);
+    }
+
+
+
 
     private void loadPicFromCorpWXServer(Integer companyId, List<Report> reportList) {
         List<Report> batchUpdateList = new ArrayList<>();
@@ -1180,6 +1272,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 membdate.setUserId(oneReport.getCreatorId());
                 membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
                 reportAlogMembdateMapper.insert(membdate);
+
+                //日报的审核过程记录
+                saveApproveReportLog(reportList, user.getId(), user.getName());
             }
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");
@@ -1396,7 +1491,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             membdate.setUserId(oneReport.getCreatorId());
             membdate.setUserName(userMapper.selectById(oneReport.getCreatorId()).getName());
             reportAlogMembdateMapper.insert(membdate);
-
+            saveDenyReportLog(rList, user.getId(), user.getName(), reason);
             //发送企业微信通知消息
             User reporter = userMapper.selectById(fillUserId);
             String corpwxUserid = reporter.getCorpwxUserid();
@@ -1739,6 +1834,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             log.setUserName(user.getName());
             log.setProjectName(s);
             reportAuditLogMapper.insert(log);
+
+            saveApproveReportLog(allReports, user.getId(), user.getName());
             //当前所有员工的日期
             List<ReportAlogMembdate> membList = new ArrayList<>();
             for (Report r : allReports) {
@@ -1836,6 +1933,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         log.setProjectName(s);
         reportAuditLogMapper.insert(log);
         List<Report> allReports = reportMapper.selectList(new QueryWrapper<Report>().in("id", ids));
+        saveDenyReportLog(allReports, user.getId(), user.getName(), null);
         List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", company.getId()));
         //当前所有员工的日期
         List<ReportAlogMembdate> membList = new ArrayList<>();

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

@@ -124,6 +124,7 @@ referer:
     - app71020.eapps.dingtalkcloud.com
     - mldmobworktime.ttkuaiban.com
     - mldworktime.ttkuaiban.com
+    - gs.farben.com.cn
     - 47.101.180.183
 excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/error,/testClient,/corpWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*
 

+ 72 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -639,5 +639,77 @@
         </if>
     </select>
 
+    <select id="getWaitingReviewListByDepartment" resultType="java.util.Map">
+        select us.name as userName,dp.department_name as departmentName,COUNT((rp.state=0 or null) and ( rp.is_dept_audit =1 or null)) as num
+        from user us
+        left join department dp on us.manage_dept_id =dp.department_id
+        left join report rp on rp.audit_deptid=dp.department_id
+        where us.company_id=#{companyId} and  us.manage_dept_id !=0 and rp.create_date between #{startDate} and #{endDate} and us.is_active=1
+        <if test="departmentId!=null">
+            and dp.department_id=#{departmentId}
+        </if>
+        <if test="userId!=null">
+            and us.id=#{userId}
+        </if>
+        group by dp.department_id,us.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="getWaitingReviewListByProject" resultType="java.util.Map">
+        select us.name as userName,project.project_name as projectName,COUNT((rp.state=0 or null) and ( rp.is_dept_audit =0 or null)) as num
+        from user us
+        left join report rp on rp.project_auditor_id=us.id
+        left join project on project.id=rp.project_id
+        where us.company_id=#{companyId} and rp.project_id is not null and rp.create_date between #{startDate} and #{endDate}  and us.is_active=1
+        <if test="projectId!=null">
+            and project.id=#{projectId}
+        </if>
+        <if test="userId!=null">
+            and us.id=#{userId}
+        </if>
+        group by project.id,us.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>
+    </select>
+
+    <select id="findCountWithDepartment" resultType="java.lang.Long">
+        select  count(1)
+        from (select us.name as userName,dp.department_name as departmentName,COUNT((rp.state=0 or null) and ( rp.is_dept_audit =1 or null)) as num
+        from user us
+        left join department dp on us.manage_dept_id =dp.department_id
+        left join report rp on rp.audit_deptid=dp.department_id
+        where us.company_id=#{companyId} and  us.manage_dept_id !=0 and rp.create_date between #{startDate} and #{endDate}  and us.is_active=1
+        <if test="departmentId!=null">
+            and dp.department_id=#{departmentId}
+        </if>
+        <if test="userId!=null">
+            and us.id=#{userId}
+        </if>
+        group by dp.department_id,us.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>) total
+    </select>
 
+    <select id="findCountWithProject" resultType="java.lang.Long">
+        select  count(1)
+        from (select us.name as userName,project.project_name as projectName,COUNT((rp.state=0 or null) and ( rp.is_dept_audit =0 or null)) as num
+        from user us
+        left join report rp on rp.project_auditor_id=us.id
+        left join project on project.id=rp.project_id
+        where us.company_id=#{companyId} and rp.project_id is not null and rp.create_date between #{startDate} and #{endDate}  and us.is_active=1
+        <if test="projectId!=null">
+            and project.id=#{projectId}
+        </if>
+        <if test="userId!=null">
+            and us.id=#{userId}
+        </if>
+        group by project.id,us.id
+        <if test="start!=null and size!=null">
+            limit #{start},#{size}
+        </if>) total
+    </select>
 </mapper>

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportLogMapper.xml

@@ -0,0 +1,22 @@
+<?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.ReportLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportLog">
+        <id column="id" property="id" />
+        <result column="creator_id" property="creatorId" />
+        <result column="create_date" property="createDate" />
+        <result column="report_ids" property="reportIds" />
+        <result column="msg" property="msg" />
+        <result column="operator_id" property="operatorId" />
+        <result column="company_id" property="companyId" />
+        <result column="operate_date" property="operateDate" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, creator_id, create_date, report_ids, msg, operator_id, company_id, operate_date
+    </sql>
+
+</mapper>

Diferenças do arquivo suprimidas por serem muito extensas
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/费用报销导入模板.xlsx