待办列表

合同金额修改进待办列表
补卡审核进待办列表
This commit is contained in:
方亮 2026-01-08 10:32:56 +08:00
parent 628dc4367a
commit 8d0ae241d3
20 changed files with 570 additions and 17 deletions

View File

@ -15,6 +15,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* 虹软
* 人脸识别工具类
* @author zys
*/

View File

@ -0,0 +1,96 @@
package com.bonus.bmw.controller;
import com.bonus.bmw.domain.vo.PmToDoVo;
import com.bonus.bmw.service.PmToDoService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.InnerAuth;
import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.bonus.bmw.utils.OwnPermissionUtil.dealWithPermission;
/**
* 待办列表控制层
*
* @author fly
*/
@Slf4j
@RestController
@RequestMapping("/todo")
public class PmToDoController extends BaseController {
/**
* 服务对象
*/
@Autowired
private PmToDoService service;
/**
* 查询列表
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth)
@GetMapping("/list")
@SysLog(title = "待办列表", businessType = OperaType.QUERY, logType = 0, module = "分包商管理->待办列表")
public TableDataInfo list(PmToDoVo o) {
try {
Map<String,String> map = dealWithPermission();
if(!map.isEmpty()){
// 3. map 中的值复制到 o 对象中
org.apache.commons.beanutils.BeanUtils.populate(o, map);
}
startPage();
List<PmToDoVo> list = service.selectTodoList(o);
return getDataTable(list);
} catch (Exception e) {
log.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth)
@PostMapping("/getToDoNum")
@SysLog(title = "获取待办列表数量", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->获取待办列表数量", details = "获取待办列表数量")
public AjaxResult getToDoNum(@RequestBody PmToDoVo o) {
try {
Map<String,String> map = dealWithPermission();
//TODO 如果是总公司人员不给提示直接返回0
if(!map.isEmpty()){
// 3. map 中的值复制到 o 对象中
org.apache.commons.beanutils.BeanUtils.populate(o, map);
}
int m = service.getToDoNum(o);
return toAjax(m);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth)
@PostMapping("/updateTodoStatus")
@SysLog(title = "修改待办列表状态", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->修改待办列表状态", details = "修改待办列表状态")
public AjaxResult updateTodoStatus(@RequestBody PmToDoVo o) {
try {
int m = service.updateTodoStatus(o);
if (m>0){
return success("修改成功");
}else {
return error("修改失败");
}
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
}

View File

@ -395,5 +395,25 @@ public class PmWorkerController extends BaseController {
return error("系统异常,请联系管理员");
}
/**
* 查询入场人员文件缺失情况
* @param o
* @return
*
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false))
@GetMapping("/getWorkerFileMsg")
@SysLog(title = "查询入场人员文件缺失情况", businessType = OperaType.QUERY, logType = 0, module = "施工人员->出入场管理->查询入场人员文件缺失情况", details = "查询入场人员文件缺失情况")
public TableDataInfo getWorkerFileMsg(PmWorkerDto o) {
try {
startPage();
List<PmWorker> list = service.getWorkerFileMsg(o);
return getDataTable(list);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return getDataTableError(new ArrayList<>());
}
}

View File

@ -50,6 +50,11 @@ public class PmWorkerDto {
*/
private Integer teamId;
/**
* 班组名称
*/
private String teamName;
/**
* 岗位名称
*/

View File

@ -0,0 +1,73 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
@Data
public class PmToDoVo {
/**
*
*/
private Integer id;
/**
*
*/
private String ids;
/**
* 1 补卡审核 2 合同修改提醒
*/
private String type;
/**
* 关联数据主键
*/
private String dataKey;
/**
* 状态 0 未读 1 已读 2 关联主表状态
*/
private String status;
/**
* 分公司Id
*/
private Integer subComId;
/**
* 组织Id
*/
private String orgId;
/**
* 工程Id
*/
private Integer proId;
/**
* 工人Id
*/
private Integer workerId;
/**
* 消息
*/
private String content;
/**
* 修改人
*/
private String updateUser;
/**
* 创建时间
*/
private String createTime;
/**
*
*/
private Integer isActive;
private String proName;
}

View File

@ -226,4 +226,10 @@ public class PmWorker {
@Excel(name = "银行联号", type = Excel.Type.IMPORT)
private String bankIdentifierCode;
private String faceFile;
private String contractFile;
private String wageFile;
}

View File

@ -1,6 +1,7 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.vo.BmWorkerContract;
import com.bonus.bmw.domain.vo.PmToDoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -65,4 +66,8 @@ public interface BmWorkerContractMapper {
* @param workerId
*/
void updateEinDayRecordContractId(@Param("oldContractId") Integer id,@Param("workerId") Integer workerId,@Param("contractId") Integer contractId);
BmWorkerContract getContractById(Integer id);
void insertToDoList(PmToDoVo pmToDoVo);
}

View File

@ -0,0 +1,16 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.vo.PmToDoVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PmToDoMapper {
List<PmToDoVo> selectTodoList(PmToDoVo o);
int getToDoNum(PmToDoVo o);
int updateTodoStatus(List<String> list);
}

View File

@ -170,4 +170,6 @@ public interface PmWorkerMapper {
* @param record
*/
void updateWorkerPost(PmWorker record);
List<PmWorker> getWorkerFileMsg(PmWorkerDto o);
}

View File

@ -3,6 +3,7 @@ package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.dto.*;
import com.bonus.bmw.domain.po.MapBeanPo;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.vo.PmToDoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -58,4 +59,11 @@ public interface RepairCardApplyMapper {
List<RepairCardApplyDto> getRepairCardApplyByProMonth(RepairCardApplyDto cardApplyDto);
String getSalaryStatus(RepairCardApplyDto cardApplyDto);
/**
* 获取项目所属组织信息
*
* @param proId
* @return
*/
PmToDoVo getProUnderMsgByProId(Integer proId);
}

View File

@ -0,0 +1,15 @@
package com.bonus.bmw.service;
import com.bonus.bmw.domain.vo.PmToDoVo;
import java.util.List;
public interface PmToDoService{
List<PmToDoVo> selectTodoList(PmToDoVo o);
int getToDoNum(PmToDoVo o);
int updateTodoStatus(PmToDoVo o);
}

View File

@ -47,4 +47,12 @@ public interface PmWorkerService{
AjaxResult insertProEin(PmWorker o, List<WebFileDto> listFile);
String workerManyEinImport(List<PmWorkerImport> workerList);
/**
* 查询入场人员文件缺失情况
* @param o
* @return
*
*/
List<PmWorker> getWorkerFileMsg(PmWorkerDto o);
}

View File

@ -2,6 +2,7 @@ package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.vo.BmWorkerContract;
import com.bonus.bmw.domain.vo.PmToDoVo;
import com.bonus.bmw.mapper.BmWorkerContractMapper;
import com.bonus.bmw.service.BmWorkerContractService;
import com.bonus.common.core.constant.Constants;
@ -46,6 +47,23 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{
public int updateByPrimaryKey(BmWorkerContract record, List<WebFileDto> listFile) {
//如果有旧的有效合同执行删除
if(record.getId() != null){
//如果修改了名字就保存记录,并且将以前别的表存的静态name修改 20251226
BmWorkerContract o = mapper.getContractById(record.getId());
//是否修改了合同额
if(record.getWageCriterion() != null && !record.getWageCriterion().equals(o.getWageCriterion())){
PmToDoVo pmToDoVo = new PmToDoVo();
pmToDoVo.setType("2");
pmToDoVo.setDataKey(record.getId().toString());
pmToDoVo.setStatus("0");
pmToDoVo.setSubComId(o.getSubComId());
pmToDoVo.setOrgId(o.getOrgId());
pmToDoVo.setProId(o.getProId());
pmToDoVo.setWorkerId(o.getWorkerId());
pmToDoVo.setContent("施工人员 "+o.getName()+" 的合同已被 "+SecurityUtils.getLoginUser().getSysUser().getNickName() +
" 修改,合同金额被从 "+o.getWageCriterion()+" 修改为 " + record.getWageCriterion());
pmToDoVo.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getNickName());
mapper.insertToDoList(pmToDoVo);
}
deleteByPrimaryKey(record.getId());
}
record.setCreateUser(SecurityUtils.getUsername());

View File

@ -0,0 +1,39 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.vo.PmToDoVo;
import com.bonus.bmw.mapper.PmToDoMapper;
import com.bonus.bmw.service.PmToDoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
@Service
public class PmToDoServiceImpl implements PmToDoService{
@Autowired
private PmToDoMapper mapper;
@Override
public List<PmToDoVo> selectTodoList(PmToDoVo o) {
return mapper.selectTodoList(o);
}
@Override
public int getToDoNum(PmToDoVo o) {
return mapper.getToDoNum(o);
}
@Override
public int updateTodoStatus(PmToDoVo o) {
String[] split = o.getIds().split(",");
List<String> list = Arrays.asList(split);
if (!list.isEmpty()){
return mapper.updateTodoStatus(list);
}else {
return 0;
}
}
}

View File

@ -29,10 +29,7 @@ import javax.validation.Validator;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Service
@ -373,6 +370,11 @@ public class PmWorkerServiceImpl implements PmWorkerService{
return successMsg.toString();
}
@Override
public List<PmWorker> getWorkerFileMsg(PmWorkerDto o) {
return mapper.getWorkerFileMsg(o);
}
private void importEinData(PmWorker worker) {
Integer a = mapper.getProIdByProName(worker.getProName());
Integer b = mapper.getSubIdBySubName(worker.getSubName());

View File

@ -3,6 +3,8 @@ package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.dto.*;
import com.bonus.bmw.domain.po.MapBeanPo;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.vo.PmToDoVo;
import com.bonus.bmw.mapper.BmWorkerContractMapper;
import com.bonus.bmw.mapper.PmProjectMapper;
import com.bonus.bmw.mapper.RepairCardApplyMapper;
import com.bonus.bmw.service.RepairCardApplyService;
@ -14,7 +16,9 @@ import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.system.api.model.UploadFileVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
@ -34,6 +38,9 @@ public class RepairCardApplyServiceImpl implements RepairCardApplyService {
@Resource
private RepairCardApplyMapper repairCardApplyMapper;
@Autowired
private BmWorkerContractMapper contractMapper;
@Resource
private PmProjectMapper pmProjectMapper;
@ -126,11 +133,22 @@ public class RepairCardApplyServiceImpl implements RepairCardApplyService {
return repairCardApplyMapper.workPersonList(cardApply);
}
@Transactional
@Override
public AjaxResult saverepairCardApply(RepairCardApplyDto cardApplyDto, FileBasicMsgDto fileBasicMsgDto) {
cardApplyDto.setApplyUser(SecurityUtils.getLoginUser().getUsername());
Integer num = repairCardApplyMapper.saverepairCardApply(cardApplyDto);
if (num > 0) {
//补卡申请的审核提示添加到待办事项
PmToDoVo pmToDoVo = repairCardApplyMapper.getProUnderMsgByProId(cardApplyDto.getProId());
pmToDoVo.setType("1");
pmToDoVo.setDataKey(String.valueOf(cardApplyDto.getId()));
pmToDoVo.setStatus("2");
pmToDoVo.setContent(SecurityUtils.getLoginUser().getSysUser().getNickName() +
" 提交了工程 "+ pmToDoVo.getProName() +" 的补卡申请,请前往审核确认");
pmToDoVo.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getNickName());
contractMapper.insertToDoList(pmToDoVo);
repairCardApplyMapper.saverepairCardDetails(cardApplyDto.getId(), cardApplyDto.getRepairCardRecords());
//添加到文件库和minio上
if (StringUtils.isNotNull(fileBasicMsgDto.getFiles())) {

View File

@ -26,6 +26,9 @@
<result column="isSign" property="isSign" />
<result column="is_active" property="isActive" />
<result column="einStatus" property="einStatus" />
<result column="org_id" property="orgId"/>
<result column="pro_id" property="proId"/>
<result column="sub_com_id" property="subComId"/>
</resultMap>
@ -205,4 +208,33 @@
</otherwise>
</choose>
</update>
<select id="getContractById" resultMap="BaseResultMap">
SELECT
bwc.id,
bwc.wage_criterion,
bwc.worker_id,
pw.name,
bwc.pro_id,
pp.sub_com_id,
pp.org_id
FROM
bm_worker_contract bwc
LEFT JOIN pm_project pp ON pp.id = bwc.pro_id
left join pm_worker pw on pw.id = bwc.worker_id
WHERE
bwc.id = #{id}
ORDER BY
bwc.id DESC
</select>
<insert id="insertToDoList">
INSERT INTO pm_to_do (
`type`, `data_key`, `status`, `sub_com_id`, `org_id`,
`pro_id`, `worker_id`, `content`, `update_user`
) VALUES (
#{type}, #{dataKey}, #{status}, #{subComId}, #{orgId},
#{proId}, #{workerId}, #{content}, #{updateUser}
)
</insert>
</mapper>

View File

@ -0,0 +1,127 @@
<?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.bonus.bmw.mapper.PmToDoMapper">
<resultMap id="BaseResultMap" type="com.bonus.bmw.domain.vo.PmToDoVo">
<id column="id" property="id" />
<result column="type" property="type" />
<result column="data_key" property="dataKey" />
<result column="status" property="status" />
<result column="sub_com_id" property="subComId" />
<result column="org_id" property="orgId" />
<result column="pro_id" property="proId" />
<result column="worker_id" property="workerId" />
<result column="content" property="content" />
<result column="update_user" property="updateUser" />
</resultMap>
<select id="selectTodoList" resultType="com.bonus.bmw.domain.vo.PmToDoVo">
<if test='type == "1"'>
select
a.id,
a.data_key,
br.check_status as status,
a.sub_com_id,
a.org_id,
a.pro_id,
pp.pro_name,
a.content,
a.update_user,
a.create_time
from
pm_to_do a
inner join bm_repair_card_apply br on a.data_key = br.id and br.check_status = 0 and br.is_active = 1
left join pm_project pp on a.pro_id = pp.id
where
a.is_active = 1 and a.type = 1
<if test="proName != null and proName != ''">
and locate(#{proName},pp.pro_name) > 0
</if>
<if test="proId != null and proId != ''">
and a.pro_id = #{proId}
</if>
<if test="orgId != null and orgId != ''">
and a.org_id = #{orgId}
</if>
<if test="subComId != null and subComId != ''">
and a.sub_com_id = #{subComId}
</if>
</if>
<if test='type == "2"'>
select
a.id,
a.data_key,
a.status,
a.sub_com_id,
a.org_id,
a.pro_id,
pp.pro_name,
a.content,
a.update_user,
a.create_time
from
pm_to_do a
left join pm_project pp on a.pro_id = pp.id
where
a.is_active = 1 and a.type = 2
<if test="proId != null and proId != ''">
and a.pro_id = #{proId}
</if>
<if test="orgId != null and orgId != ''">
and a.org_id = #{orgId}
</if>
<if test="subComId != null and subComId != ''">
and a.sub_com_id = #{subComId}
</if>
order by status
</if>
</select>
<select id="getToDoNum" resultType="int">
select
sum(num)
from (
select count(a.id) as num
from pm_to_do a
inner join bm_repair_card_apply br on a.data_key = br.id and br.check_status = 0 and br.is_active = 1
where a.is_active = 1
and a.type = 1
<if test="proId != null and proId != ''">
and a.pro_id = #{proId}
</if>
<if test="orgId != null and orgId != ''">
and a.org_id = #{orgId}
</if>
<if test="subComId != null and subComId != ''">
and a.sub_com_id = #{subComId}
</if>
union all
select
count(a.id) as num
from
pm_to_do a
left join pm_project pp on a.pro_id = pp.id
where
a.is_active = 1 and a.type = 2 and a.status = 0
<if test="proId != null and proId != ''">
and a.pro_id = #{proId}
</if>
<if test="orgId != null and orgId != ''">
and a.org_id = #{orgId}
</if>
<if test="subComId != null and subComId != ''">
and a.sub_com_id = #{subComId}
</if>
) aaa
</select>
<update id="updateTodoStatus">
update pm_to_do
set
status = 1
where id in
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</update>
</mapper>

View File

@ -25,6 +25,9 @@
<result column="sub_id" property="subId" />
<result column="is_shanghai" property="isShanghai"/>
<result column="light_status" property="lightStatus"/>
<result column="contractFile" property="contractFile"/>
<result column="faceFile" property="faceFile"/>
<result column="wageFile" property="wageFile"/>
</resultMap>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
SELECT
@ -395,4 +398,49 @@
update bm_worker_ein_msg set post_id = #{postId},post_name = #{postName} where worker_id = #{id} and pro_id = #{proId};
update bm_worker_ein_pro_record set post_id = #{postId},post_name = #{postName} where worker_id = #{id} and pro_id = #{proId};
</update>
<select id="getWorkerFileMsg" resultMap="BaseResultMap">
SELECT
pw.id,
pw.`name`,
bwem.pro_id,
bwem.pro_name,
bwem.team_name,
bwem.sub_name,
bwem.post_name,
bwem.ein_time,
IF(bf1.id IS NOT NULL, 1, 0) AS faceFile,
IF(bf2.id IS NOT NULL, 1, 0) AS contractFile,
IF(bf3.id IS NOT NULL, 1, 0) AS wageFile
FROM
bm_worker_ein_msg bwem
INNER JOIN pm_worker pw ON pw.id = bwem.worker_id
AND pw.is_active = 1
LEFT JOIN bm_files bf1 ON bf1.source_id = pw.id
AND bf1.source_table = 'pm_worker'
AND bf1.file_url IS NOT NULL
LEFT JOIN bm_worker_contract bwc ON bwc.worker_id = bwem.worker_id
AND bwc.pro_id = bwem.pro_id
LEFT JOIN bm_files bf2 ON bf2.source_id = bwc.id
AND bf2.source_table = 'bm_worker_contract'
AND bf2.file_url IS NOT NULL
LEFT JOIN bm_worker_wage_card bwwc ON bwwc.worker_id = bwem.worker_id
LEFT JOIN bm_files bf3 ON bf3.source_id = bwwc.id
AND bf3.source_table = 'bm_worker_wage_card'
AND bf3.file_url IS NOT NULL
where bwem.pro_id = #{proId}
<if test="subName != null and subName != ''">
and locate(#{subName}, bwem.sub_name) > 0
</if>
<if test="teamName != null and teamName != ''">
and locate(#{teamName}, bwem.team_name) > 0
</if>
<if test="name != null and name != ''">
and pw.name like concat('%',#{name},'%')
</if>
GROUP BY
pw.id,bwem.pro_id
order by contractFile ASC
</select>
</mapper>

View File

@ -197,9 +197,9 @@
brca.repair_num as repairNum,
brca.repair_day as repairDay,
brca.repair_remark as repairRemark,
brca.apply_user as applyUser,
su.nick_name as applyUser,
brca.apply_time as applyTime,
brca.check_user as checkUser,
su2.nick_name as checkUser,
brca.check_status as checkStatus,
case when brca.check_status = 0 then '待审核'
when brca.check_status = 1 then '审核通过'
@ -209,6 +209,8 @@
brca.refuse_remark as refuseRemark
from bm_repair_card_apply brca
left join pm_project pp on pp.id = brca.pro_id
left join sys_user su on su.user_name = brca.apply_user
left join sys_user su2 on su2.user_name = brca.check_user
<where>
<if test="applyUser != null">
and brca.apply_user like concat('%',#{applyUser},'%')
@ -360,4 +362,16 @@
table_month = #{repairMonth}
AND pro_id = #{proId}
</select>
<select id="getProUnderMsgByProId" resultType="com.bonus.bmw.domain.vo.PmToDoVo">
SELECT
pp.id as pro_id,
pp.pro_name,
pp.sub_com_id,
pp.org_id
FROM
pm_project pp
WHERE
pp.id = #{proId}
</select>
</mapper>