Browse Source

审核他人文件

zhouyy 2 months ago
parent
commit
0804d6fa08

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -127,6 +127,22 @@ public class TaskController {
     @Autowired
     private ProjectCategoryMapper projectCategoryMapper;
 
+    @PostMapping("/sendMsgToChargers")
+    public HttpRespMsg sendMsgToChargers(
+            @RequestParam("ids")String ids, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = taskService.sendMsgToChargers(ids,request);
+        return msg;
+    }
+
+    @PostMapping("/getOtherTaskChargePage")
+    public HttpRespMsg getOtherTaskChargePage(
+            QueryTaskChargePage queryBO, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = taskService.getOtherTaskChargePage(queryBO,request);
+        return msg;
+    }
+
     @PostMapping("/getTaskChargePage")
     public HttpRespMsg getTaskChargePage(
             QueryTaskChargePage queryBO, HttpServletRequest request) {

+ 6 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.management.platform.entity.Task;
 import com.management.platform.entity.TimeTask;
 import com.management.platform.entity.bo.QueryTaskChargePage;
-import com.management.platform.entity.vo.ProjectTaskTimeCostVO;
-import com.management.platform.entity.vo.ProjectTimeCostVO;
-import com.management.platform.entity.vo.TaskChargePageVO;
-import com.management.platform.entity.vo.TaskFileChargePageVO;
+import com.management.platform.entity.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
@@ -83,6 +80,11 @@ public interface TaskMapper extends BaseMapper<Task> {
 
     int getTaskFileChargePageTotal(@Param("queryBO") QueryTaskChargePage queryBO, @Param("deptIds")List<Integer> branchDepartment);
 
+
+    List<OtherTaskFileInfoVO> getOtherTaskChargePage(@Param("queryBO") QueryTaskChargePage queryBO, @Param("deptIds")List<Integer> branchDepartment);
+
+    int getOtherTaskChargePageTotal(@Param("queryBO") QueryTaskChargePage queryBO, @Param("deptIds")List<Integer> branchDepartment);
+
     List<ProjectTaskTimeCostVO> getProjectAllTaskTimeCost(@Param("projectId") Integer projectId);
 
     List<ProjectTimeCostVO> getProjectTaskTimeCostByIds(@Param("projectIds")List<Integer> projectIds);

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

@@ -60,4 +60,8 @@ public interface TaskService extends IService<Task> {
     HttpRespMsg getFileRejectReason(String taskId, HttpServletRequest request);
 
     HttpRespMsg getTaskChargePage(QueryTaskChargePage queryBO, HttpServletRequest request);
+
+    HttpRespMsg getOtherTaskChargePage(QueryTaskChargePage queryBO, HttpServletRequest request);
+
+    HttpRespMsg sendMsgToChargers(String ids, HttpServletRequest request);
 }

+ 86 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.util.StringUtil;
 import com.management.platform.entity.*;
 import com.management.platform.entity.bo.QueryTaskChargePage;
+import com.management.platform.entity.vo.OtherTaskFileInfoVO;
 import com.management.platform.entity.vo.TaskFileChargePageVO;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
@@ -16,6 +17,7 @@ import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.xssf.usermodel.XSSFCell;
@@ -987,6 +989,90 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         return msg;
     }
 
+    @Override
+    public HttpRespMsg getOtherTaskChargePage(QueryTaskChargePage queryBO, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String userId = request.getHeader("Token");
+        User user = userMapper.selectById(userId);
+        Integer companyId = user.getCompanyId();
+        queryBO.setUserId(userId);
+        queryBO.setCompanyId(companyId);
+        queryBO.setPageIndex((queryBO.getPageIndex()-1)*queryBO.getPageSize());
+
+        List<Integer> branchDepartment=null;
+        if(queryBO.getDeptId()!=null){
+            List<Department> departmentList=departmentService.list(new QueryWrapper<Department>().eq("company_id",companyId));
+            branchDepartment= getBranchDepartment(queryBO.getDeptId(), departmentList);
+        }
+
+        List<OtherTaskFileInfoVO> list = taskMapper.getOtherTaskChargePage(queryBO,branchDepartment);
+        List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId())
+                .eq(User::getIsActive, 1)
+        );
+
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",user.getCompanyId()));
+        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
+
+        if(CollectionUtils.isNotEmpty(list)){
+            Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getId, t -> t));
+            for (OtherTaskFileInfoVO otherTaskFileInfoVO : list) {
+                User createrUser = userMap.get(otherTaskFileInfoVO.getCreatorId());
+                User finalChargeUser = userMap.get(otherTaskFileInfoVO.getFinalChargeId());
+                String createrUserWxId = "";
+                String chargeUserWxId = "";
+                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                    createrUserWxId = createrUser.getCorpwxRealUserid();
+                    chargeUserWxId = finalChargeUser.getCorpwxRealUserid();
+                }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                    createrUserWxId = createrUser.getDingdingUserid();
+                    chargeUserWxId = finalChargeUser.getDingdingUserid();
+                }
+                if(StringUtils.isNotBlank(createrUserWxId)){
+                    otherTaskFileInfoVO.setCreatorName("$userName=" + createrUserWxId + "$");
+                }else{
+                    otherTaskFileInfoVO.setCreatorName(createrUser.getName());
+                }
+                if(StringUtils.isNotBlank(chargeUserWxId)){
+                    otherTaskFileInfoVO.setFinalChargeName("$userName=" + chargeUserWxId + "$");
+                }else{
+                    otherTaskFileInfoVO.setFinalChargeName(finalChargeUser.getName());
+                }
+            }
+        }
+
+        int total = taskMapper.getOtherTaskChargePageTotal(queryBO,branchDepartment);
+        Map<String, Object> map = new HashMap<>();
+        map.put("records", list);
+        map.put("total", total);
+        msg.data = map;
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg sendMsgToChargers(String ids, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String userId = request.getHeader("Token");
+        User user = userMapper.selectById(userId);
+
+        String[] split = ids.split(",");
+        if(0 == split.length){
+            msg.setError("审核文件不能为空");
+            return msg;
+        }
+
+        List<String> list = Arrays.asList(split);
+        List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getId, list));
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+
+        String collect = users.stream().map(User::getCorpwxUserid).distinct().collect(Collectors.joining(","));
+
+        if(CollectionUtils.isNotEmpty(users)){
+            wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,collect,"请尽快完成任务文件的审核",null
+                    , WxCorpInfoServiceImpl.TEXT_CARD_MSG_TASK_FILE_CHECK);
+        }
+        return msg;
+    }
+
     private List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
         List<Integer> list = new ArrayList<>();
         list.add(departmentId);

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

@@ -118,6 +118,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     public static final int TEXT_CARD_MSG_EXPENSE_NEED = 26;//费用报销待审核
     public static final int TEXT_CARD_MSG_EXPENSE_UN = 27;//费用报销待填写
 
+    public static final int TEXT_CARD_MSG_TASK_FILE_CHECK = 28;//任务文件驳回
+
     private static Object userLock = new Object();
 
     @Value("${suitId}")
@@ -370,6 +372,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                     title = "任务文件更新";
                 } else if (msgType.equals(TEXT_CARD_MSG_TASK_FILE_REJECT)) {
                     title = "任务文件被驳回";
+                } else if (msgType.equals(TEXT_CARD_MSG_TASK_FILE_CHECK)) {
+                    title = "任务文件审核";
                 }
             } else {
                 jumpUrl = jumpUrl.replace("STATE", pageRouter);

+ 67 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -738,4 +738,71 @@
         )tmp1
         group by project_id
     </select>
+    <select id="getOtherTaskChargePage" resultType="com.management.platform.entity.vo.OtherTaskFileInfoVO">
+        select tf.task_id,task.name as taskName
+        ,p.id as projectId,p.project_name
+        ,tf.creator_id,tf.document_name
+        ,case tf.charge_stage
+        when 1 then tf.charge_one_id when 2 then tf.charge_two_id
+        end as final_charge_id
+        from task_files tf
+        left join task on tf.task_id = task.id
+        left join project p on task.project_id = p.id
+        <where>
+            tf.need_file_charge = 1
+            and tf.final_charge_status = 0
+            and task.task_status = 0
+            and task.company_id = #{queryBO.companyId}
+            and case tf.charge_stage
+            when 1 then tf.charge_one_id != #{queryBO.userId} and tf.charge_one_status = 0
+            when 2 then tf.charge_two_id != #{queryBO.userId} and tf.charge_two_status = 0
+            end
+            <if test="queryBO.taskName != null and queryBO.taskName != ''">
+                and task.name like concat('%',#{queryBO.taskName},'%')
+            </if>
+            <if test="deptIds!=null and deptIds.size()>0">
+                and p.dept_id in
+                <foreach collection="deptIds" open="(" close=")" separator="," item="item">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        ORDER BY tf.task_id ,tf.id desc
+        <if test="queryBO.pageIndex != null and queryBO.pageSize != null">
+            limit #{queryBO.pageIndex}, #{queryBO.pageSize}
+        </if>
+    </select>
+    <select id="getOtherTaskChargePageTotal" resultType="java.lang.Integer">
+        select count(*)
+        from (
+        select tf.task_id,task.name as taskName
+        ,p.id as projectId,p.project_name
+        ,tf.creator_id,tf.document_name
+        ,case tf.charge_stage
+        when 1 then tf.charge_one_id when 2 then tf.charge_two_id
+        end as final_charge_id
+        from task_files tf
+        left join task on tf.task_id = task.id
+        left join project p on task.project_id = p.id
+        <where>
+            tf.need_file_charge = 1
+            and tf.final_charge_status = 0
+            and task.task_status = 0
+            and task.company_id = #{queryBO.companyId}
+            and case tf.charge_stage
+            when 1 then tf.charge_one_id != #{queryBO.userId} and tf.charge_one_status = 0
+            when 2 then tf.charge_two_id != #{queryBO.userId} and tf.charge_two_status = 0
+            end
+            <if test="queryBO.taskName != null and queryBO.taskName != ''">
+                and task.name like concat('%',#{queryBO.taskName},'%')
+            </if>
+            <if test="deptIds!=null and deptIds.size()>0">
+                and p.dept_id in
+                <foreach collection="deptIds" open="(" close=")" separator="," item="item">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+             ) tmp1
+    </select>
 </mapper>