Merge branch 'prod' into guoshengxiong

This commit is contained in:
guoshengxiong 2025-07-01 10:02:03 +08:00
commit 8bfcbfa068
9 changed files with 228 additions and 134 deletions

View File

@ -5,6 +5,7 @@ import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist; import com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist;
import com.zhgd.xmgl.modules.worker.service.IWorkerBlacklistService; import com.zhgd.xmgl.modules.worker.service.IWorkerBlacklistService;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
import com.zhgd.xmgl.util.MessageUtil; import com.zhgd.xmgl.util.MessageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -13,7 +14,11 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map; import java.util.Map;
@ -22,7 +27,7 @@ import java.util.Map;
* @Title: Controller * @Title: Controller
* @Description: 人员黑名单 * @Description: 人员黑名单
* @author pds * @author pds
* @date 2020-11-23 * @date 2020-11-23
* @version V1.0 * @version V1.0
*/ */
@RestController @RestController
@ -30,14 +35,19 @@ import java.util.Map;
@Slf4j @Slf4j
@Api(tags = "人员黑名单") @Api(tags = "人员黑名单")
public class WorkerBlacklistController { public class WorkerBlacklistController {
@Autowired @Lazy
private IWorkerBlacklistService workerBlacklistService; @Autowired
WorkerInfoServiceImpl workerInfoService;
@Lazy
@Autowired
private IWorkerBlacklistService workerBlacklistService;
/** /**
* 分页列表查询 * 分页列表查询
* @return *
*/ * @return
@ApiOperation(value = "分页列表查询人员黑名单信息", notes = "分页列表查询人员黑名单信息", httpMethod = "POST") */
@ApiOperation(value = "分页列表查询人员黑名单信息", notes = "分页列表查询人员黑名单信息", httpMethod = "POST")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "workerName", value = "姓名", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "workerName", value = "姓名", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "userEnterpriseId", value = "用户能查看的企业", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "userEnterpriseId", value = "用户能查看的企业", paramType = "body", required = false, dataType = "String"),
@ -45,96 +55,88 @@ public class WorkerBlacklistController {
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "body", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "body", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"),
}) })
@PostMapping(value = "/list") @PostMapping(value = "/list")
public Result<IPage<WorkerBlacklist>> queryPageList(@RequestBody Map<String,Object> map) { public Result<IPage<WorkerBlacklist>> queryPageList(@RequestBody Map<String, Object> map) {
Result<IPage<WorkerBlacklist>> result = new Result<IPage<WorkerBlacklist>>(); Result<IPage<WorkerBlacklist>> result = new Result<IPage<WorkerBlacklist>>();
IPage<WorkerBlacklist> pageList = workerBlacklistService.selectWorkerBlacklistPage(map); IPage<WorkerBlacklist> pageList = workerBlacklistService.selectWorkerBlacklistPage(map);
result.setSuccess(true); result.setSuccess(true);
result.setResult(pageList); result.setResult(pageList);
return result; return result;
} }
/** /**
* 添加 * 添加
*
* @param workerBlacklist * @param workerBlacklist
* @return * @return
*/ */
@OperLog(operModul = "劳务管理", operType = "添加人员黑名单信息", operDesc = "添加人员黑名单信息") @OperLog(operModul = "劳务管理", operType = "添加人员黑名单信息", operDesc = "添加人员黑名单信息")
@ApiOperation(value = "添加人员黑名单信息", notes = "添加人员黑名单信息", httpMethod = "POST") @ApiOperation(value = "添加人员黑名单信息", notes = "添加人员黑名单信息", httpMethod = "POST")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<WorkerBlacklist> add(@RequestBody WorkerBlacklist workerBlacklist) { public Result<WorkerBlacklist> add(@RequestBody WorkerBlacklist workerBlacklist) {
workerBlacklistService.addWorkerBlacklist(workerBlacklist); workerBlacklistService.addWorkerBlacklist(workerBlacklist);
return Result.ok(); return Result.ok();
} }
/** /**
* 编辑 * 编辑
*
* @param workerBlacklist * @param workerBlacklist
* @return * @return
*/ */
@OperLog(operModul = "劳务管理",operType = "编辑人员黑名单信息",operDesc = "编辑人员黑名单信息") @OperLog(operModul = "劳务管理", operType = "编辑人员黑名单信息", operDesc = "编辑人员黑名单信息")
@ApiOperation(value = "编辑人员黑名单信息", notes = "编辑人员黑名单信息" , httpMethod="POST") @ApiOperation(value = "编辑人员黑名单信息", notes = "编辑人员黑名单信息", httpMethod = "POST")
@PostMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<WorkerBlacklist> edit(@RequestBody WorkerBlacklist workerBlacklist) { public Result edit(@RequestBody WorkerBlacklist workerBlacklist) {
Result<WorkerBlacklist> result = new Result<WorkerBlacklist>(); return Result.success(workerBlacklistService.edit(workerBlacklist));
WorkerBlacklist workerBlacklistEntity = workerBlacklistService.getById(workerBlacklist.getId()); }
if(workerBlacklistEntity==null) {
result.error500(MessageUtil.get("notFindErr"));
}else {
boolean ok = workerBlacklistService.updateById(workerBlacklist);
if(ok) {
result.successMsg(MessageUtil.get("editSucess"));
}
}
return result;
}
/** /**
* 通过id删除 * 通过id删除
*
* @param * @param
* @return * @return
*/ */
@OperLog(operModul = "劳务管理",operType = "删除人员黑名单信息",operDesc = "删除人员黑名单信息") @OperLog(operModul = "劳务管理", operType = "删除人员黑名单信息", operDesc = "删除人员黑名单信息")
@ApiOperation(value = "删除人员黑名单信息", notes = "删除人员黑名单信息", httpMethod = "POST") @ApiOperation(value = "删除人员黑名单信息", notes = "删除人员黑名单信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "人员黑名单ID", paramType = "body", required = true, dataType = "Integer") @ApiImplicitParam(name = "id", value = "人员黑名单ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/delete") @PostMapping(value = "/delete")
public Result<WorkerBlacklist> delete(@RequestBody Map<String,Object> map) { public Result<WorkerBlacklist> delete(@RequestBody Map<String, Object> map) {
Result<WorkerBlacklist> result = new Result<WorkerBlacklist>(); Result<WorkerBlacklist> result = new Result<WorkerBlacklist>();
WorkerBlacklist workerBlacklist = workerBlacklistService.getById(MapUtils.getString(map,"id")); WorkerBlacklist workerBlacklist = workerBlacklistService.getById(MapUtils.getString(map, "id"));
if(workerBlacklist==null) { if (workerBlacklist == null) {
result.error500(MessageUtil.get("notFindErr")); result.error500(MessageUtil.get("notFindErr"));
}else { } else {
boolean ok = workerBlacklistService.removeById(MapUtils.getString(map,"id")); boolean ok = workerBlacklistService.removeById(MapUtils.getString(map, "id"));
if(ok) { if (ok) {
result.successMsg(MessageUtil.get("deleteSucess")); result.successMsg(MessageUtil.get("deleteSucess"));
} }
} }
return result; return result;
} }
/** /**
* 通过id查询 * 通过id查询
* @param *
* @return * @param
*/ * @return
*/
@ApiOperation(value = "通过id查询人员黑名单信息", notes = "通过id查询人员黑名单信息", httpMethod = "POST") @ApiOperation(value = "通过id查询人员黑名单信息", notes = "通过id查询人员黑名单信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "人员黑名单ID", paramType = "body", required = true, dataType = "Integer") @ApiImplicitParam(name = "id", value = "人员黑名单ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/queryById") @PostMapping(value = "/queryById")
public Result<WorkerBlacklist> queryById(@RequestBody Map<String,Object> map) { public Result<WorkerBlacklist> queryById(@RequestBody Map<String, Object> map) {
Result<WorkerBlacklist> result = new Result<WorkerBlacklist>(); Result<WorkerBlacklist> result = new Result<WorkerBlacklist>();
WorkerBlacklist workerBlacklist = workerBlacklistService.getById(MapUtils.getString(map,"id")); WorkerBlacklist workerBlacklist = workerBlacklistService.getById(MapUtils.getString(map, "id"));
if(workerBlacklist==null) { if (workerBlacklist == null) {
result.error500(MessageUtil.get("notFindErr")); result.error500(MessageUtil.get("notFindErr"));
}else { } else {
result.setResult(workerBlacklist); result.setResult(workerBlacklist);
result.setSuccess(true); result.setSuccess(true);
} }
return result; return result;
} }
@ApiOperation(value = "黑名单人员统计", notes = "黑名单人员统计") @ApiOperation(value = "黑名单人员统计", notes = "黑名单人员统计")
@ -142,7 +144,7 @@ public class WorkerBlacklistController {
@ApiImplicitParam(name = "sn", value = "项目SN", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "sn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
}) })
@PostMapping("/selectWorkerBlacklistStatistics") @PostMapping("/selectWorkerBlacklistStatistics")
public Result<Map<String,Object>> selectWorkerBlacklistStatistics(@RequestBody Map<String, Object> map) { public Result<Map<String, Object>> selectWorkerBlacklistStatistics(@RequestBody Map<String, Object> map) {
return Result.success(workerBlacklistService.selectWorkerBlacklistStatistics(map)); return Result.success(workerBlacklistService.selectWorkerBlacklistStatistics(map));
} }
} }

View File

@ -3,9 +3,11 @@ package com.zhgd.xmgl.modules.worker.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
@ -107,11 +109,15 @@ public class WorkerAttendanceRuleV2 implements Serializable {
* 加班工时时间段开始 * 加班工时时间段开始
*/ */
@ApiModelProperty(value = "加班工时时间段开始") @ApiModelProperty(value = "加班工时时间段开始")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date overtimeHourStart; private java.util.Date overtimeHourStart;
/** /**
* 加班工时时间段结束 * 加班工时时间段结束
*/ */
@ApiModelProperty(value = "加班工时时间段结束") @ApiModelProperty(value = "加班工时时间段结束")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date overtimeHourEnd; private java.util.Date overtimeHourEnd;
/** /**
* 加班工日计算方式1:工时段换算工日;2:比例换算工日; * 加班工日计算方式1:工时段换算工日;2:比例换算工日;

View File

@ -42,7 +42,6 @@ public class WorkerBlacklist implements Serializable {
*/ */
@Excel(name = "人员ID", width = 15) @Excel(name = "人员ID", width = 15)
@ApiModelProperty(value = "人员ID") @ApiModelProperty(value = "人员ID")
private java.lang.Long workerId; private java.lang.Long workerId;
/** /**
* 姓名 * 姓名
@ -84,6 +83,11 @@ public class WorkerBlacklist implements Serializable {
private java.util.Date createTime; private java.util.Date createTime;
@ApiModelProperty(value = "类型1证书过期2合同过期3保险过期") @ApiModelProperty(value = "类型1证书过期2合同过期3保险过期")
private java.lang.Integer type; private java.lang.Integer type;
/**
* 1是将人员退场0不将人员退场
*/
@ApiModelProperty(value = "1是将人员退场0不将人员退场")
private java.lang.Integer isExit;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "考勤考号") @ApiModelProperty(value = "考勤考号")

View File

@ -51,7 +51,10 @@
GROUP BY t1.id GROUP BY t1.id
</select> </select>
<select id="selectWorkerBlacklistPage" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist"> <select id="selectWorkerBlacklistPage" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist">
SELECT b.worker_name,b.attendance_number,a.* SELECT
ifnull(b.worker_name,a.worker_name) as worker_name
,b.attendance_number
,a.*
from worker_blacklist a LEFT JOIN worker_info b ON a.worker_id=b.id from worker_blacklist a LEFT JOIN worker_info b ON a.worker_id=b.id
WHERE a.project_sn=#{param.projectSn} WHERE a.project_sn=#{param.projectSn}
<if test="param.workerName!=null and param.workerName!=''"> <if test="param.workerName!=null and param.workerName!=''">

View File

@ -1397,6 +1397,9 @@
WHERE project_sn = #{projectSn} WHERE project_sn = #{projectSn}
GROUP BY worker_id) b ON a.id = b.worker_id GROUP BY worker_id) b ON a.id = b.worker_id
WHERE a.project_sn = #{projectSn} WHERE a.project_sn = #{projectSn}
<if test="inServiceType != null">
and a.inService_type = #{inServiceType}
</if>
<if test="userEnterpriseId != null and userEnterpriseId != ''"> <if test="userEnterpriseId != null and userEnterpriseId != ''">
and FIND_IN_SET(a.enterprise_id, #{userEnterpriseId}) and FIND_IN_SET(a.enterprise_id, #{userEnterpriseId})
</if> </if>

View File

@ -28,8 +28,11 @@ public interface IWorkerBlacklistService extends IService<WorkerBlacklist> {
/** /**
* 分页列表查询人员黑名单信息 * 分页列表查询人员黑名单信息
*
* @param map * @param map
* @return * @return
*/ */
IPage<WorkerBlacklist> selectWorkerBlacklistPage(Map<String, Object> map); IPage<WorkerBlacklist> selectWorkerBlacklistPage(Map<String, Object> map);
WorkerBlacklist edit(WorkerBlacklist workerBlacklist);
} }

View File

@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.worker.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -100,20 +101,25 @@ public class WorkerAttendanceRuleV2ServiceImpl extends ServiceImpl<WorkerAttenda
} }
@Override @Override
public void edit(WorkerAttendanceRuleV2Dto workerAttendanceRuleV2Dto) { public void edit(WorkerAttendanceRuleV2Dto dto) {
WorkerAttendanceRuleV2 oldWorkerAttendanceRuleV2 = baseMapper.selectById(workerAttendanceRuleV2Dto.getId()); WorkerAttendanceRuleV2 oldWorkerAttendanceRuleV2 = baseMapper.selectById(dto.getId());
if (oldWorkerAttendanceRuleV2 == null) { if (oldWorkerAttendanceRuleV2 == null) {
throw new OpenAlertException("未找到对应实体"); throw new OpenAlertException("未找到对应实体");
} }
int count = this.count(new LambdaQueryWrapper<WorkerAttendanceRuleV2>() int count = this.count(new LambdaQueryWrapper<WorkerAttendanceRuleV2>()
.eq(WorkerAttendanceRuleV2::getGroupV2Id, workerAttendanceRuleV2Dto.getGroupV2Id()) .eq(WorkerAttendanceRuleV2::getGroupV2Id, dto.getGroupV2Id())
.ne(WorkerAttendanceRuleV2::getId, workerAttendanceRuleV2Dto.getId()) .ne(WorkerAttendanceRuleV2::getId, dto.getId())
); );
if (count > 0) { if (count > 0) {
throw new OpenAlertException("该考勤组已被别的考勤规则绑定,请选择别的考勤组"); throw new OpenAlertException("该考勤组已被别的考勤规则绑定,请选择别的考勤组");
} }
baseMapper.updateById(workerAttendanceRuleV2Dto); baseMapper.updateById(dto);
saveRuleChangeLog(workerAttendanceRuleV2Dto); this.update(null, new LambdaUpdateWrapper<WorkerAttendanceRuleV2>()
.set(WorkerAttendanceRuleV2::getOvertimeHourStart, dto.getOvertimeHourStart())
.set(WorkerAttendanceRuleV2::getOvertimeHourEnd, dto.getOvertimeHourEnd())
.eq(WorkerAttendanceRuleV2::getId, dto.getId())
);
saveRuleChangeLog(dto);
} }
@Override @Override

View File

@ -3,21 +3,21 @@ package com.zhgd.xmgl.modules.worker.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.Company;
import com.zhgd.xmgl.modules.basicdata.enums.CompanyTypeEnum; import com.zhgd.xmgl.modules.basicdata.enums.CompanyTypeEnum;
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper;
import com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist; import com.zhgd.xmgl.modules.worker.entity.WorkerBlacklist;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.modules.basicdata.mapper.CompanyMapper;
import com.zhgd.xmgl.modules.worker.mapper.WorkerBlacklistMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerBlacklistMapper;
import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper;
import com.zhgd.xmgl.modules.worker.service.IWorkerBlacklistService; import com.zhgd.xmgl.modules.worker.service.IWorkerBlacklistService;
import com.zhgd.xmgl.util.MessageUtil; import com.zhgd.xmgl.util.MapBuilder;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap; import java.util.HashMap;
@ -28,43 +28,53 @@ import java.util.Objects;
/** /**
* @Description: 人员黑名单 * @Description: 人员黑名单
* @author pds * @author pds
* @date 2020-11-23 * @date 2020-11-23
* @version V1.0 * @version V1.0
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class WorkerBlacklistServiceImpl extends ServiceImpl<WorkerBlacklistMapper, WorkerBlacklist> implements IWorkerBlacklistService { public class WorkerBlacklistServiceImpl extends ServiceImpl<WorkerBlacklistMapper, WorkerBlacklist> implements IWorkerBlacklistService {
@Lazy
@Autowired
WorkerInfoServiceImpl workerInfoService;
@Lazy
@Autowired @Autowired
private WorkerBlacklistMapper workerBlacklistMapper; private WorkerBlacklistMapper workerBlacklistMapper;
@Lazy
@Autowired @Autowired
private CompanyMapper companyMapper; private CompanyMapper companyMapper;
@Lazy
@Autowired @Autowired
private WorkerInfoMapper workerInfoMapper; private WorkerInfoMapper workerInfoMapper;
@Lazy
@Autowired
private IWorkerBlacklistService workerBlacklistService;
@Override @Override
public void addWorkerBlacklist(WorkerBlacklist workerBlacklist) { public void addWorkerBlacklist(WorkerBlacklist workerBlacklist) {
QueryWrapper<WorkerBlacklist> queryWrapper = new QueryWrapper<>(); WorkerInfo workerInfo = workerInfoMapper.selectById(workerBlacklist.getWorkerId());
queryWrapper.lambda().eq(WorkerBlacklist::getProjectSn, workerBlacklist.getProjectSn()) if (workerInfo != null) {
.eq(WorkerBlacklist::getWorkerId, workerBlacklist.getWorkerId());
int count = workerBlacklistMapper.selectCount(queryWrapper);
if (count > 0) {
throw new OpenAlertException(MessageUtil.get("PersonAddErr"));
}
WorkerInfo workerInfo=workerInfoMapper.selectById(workerBlacklist.getWorkerId());
if(workerInfo!=null){
workerBlacklist.setIdCard(workerInfo.getIdCard()); workerBlacklist.setIdCard(workerInfo.getIdCard());
workerBlacklist.setWorkerName(workerInfo.getWorkerName()); workerBlacklist.setWorkerName(workerInfo.getWorkerName());
if (workerInfo.getInserviceType() == 2) {
throw new OpenAlertException("该人员已退场");
}
} }
workerBlacklistMapper.insert(workerBlacklist); workerBlacklistMapper.insert(workerBlacklist);
if (Objects.equals(workerBlacklist.getIsExit(), 1)) {
workerInfoService.updateWorkerExit(new MapBuilder<String, Object>()
.put("workerIdStr", workerBlacklist.getWorkerId())
.build());
}
} }
@Override @Override
public Map<String, Object> selectWorkerBlacklistStatistics(Map<String, Object> map) { public Map<String, Object> selectWorkerBlacklistStatistics(Map<String, Object> map) {
Map<String, Object> data=new HashMap<>(16); Map<String, Object> data = new HashMap<>(16);
QueryWrapper<Company> queryWrapper=new QueryWrapper<>(); QueryWrapper<Company> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(Company::getCompanySn, MapUtils.getString(map,"sn")); queryWrapper.lambda().eq(Company::getCompanySn, MapUtils.getString(map, "sn"));
Company tempCompany=companyMapper.selectOne(queryWrapper); Company tempCompany = companyMapper.selectOne(queryWrapper);
if(tempCompany!=null) { if (tempCompany != null) {
if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.HEADQUARTERS.getValue())) { if (Objects.equals(tempCompany.getCompanyType(), CompanyTypeEnum.HEADQUARTERS.getValue())) {
map.put("headquartersSn", MapUtils.getString(map, "sn")); map.put("headquartersSn", MapUtils.getString(map, "sn"));
map.put("companyType", "1"); map.put("companyType", "1");
@ -75,11 +85,11 @@ public class WorkerBlacklistServiceImpl extends ServiceImpl<WorkerBlacklistMappe
} else { } else {
map.put("companyType", "5"); map.put("companyType", "5");
} }
List<Map<String, Object>> list=workerBlacklistMapper.getComapnyWorkerBlacklistStatistics(map); List<Map<String, Object>> list = workerBlacklistMapper.getComapnyWorkerBlacklistStatistics(map);
data.put("list",list); data.put("list", list);
}else{ } else {
List<Map<String, Object>> list=workerBlacklistMapper.getProjectWorkerBlacklistStatistics(map); List<Map<String, Object>> list = workerBlacklistMapper.getProjectWorkerBlacklistStatistics(map);
data.put("list",list); data.put("list", list);
} }
return data; return data;
} }
@ -89,7 +99,36 @@ public class WorkerBlacklistServiceImpl extends ServiceImpl<WorkerBlacklistMappe
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString()); int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString()); int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
Page<WorkerBlacklist> page = new Page<>(pageNo, pageSize); Page<WorkerBlacklist> page = new Page<>(pageNo, pageSize);
List<WorkerBlacklist> list=workerBlacklistMapper.selectWorkerBlacklistPage(page, map); List<WorkerBlacklist> list = workerBlacklistMapper.selectWorkerBlacklistPage(page, map);
return page.setRecords(list); return page.setRecords(list);
} }
@Override
public WorkerBlacklist edit(WorkerBlacklist workerBlacklist) {
WorkerBlacklist old = this.getById(workerBlacklist.getId());
if (old == null) {
throw new OpenAlertException("数据不存在,请重新刷新");
}
WorkerInfo workerInfo = workerInfoService.getById(workerBlacklist.getWorkerId());
if (workerInfo != null) {
workerBlacklist.setIdCard(workerInfo.getIdCard());
workerBlacklist.setWorkerName(workerInfo.getWorkerName());
}
workerBlacklistService.updateById(workerBlacklist);
//修改人员进场退场
if (!Objects.equals(workerBlacklist.getIsExit(), old.getIsExit())) {
if (Objects.equals(workerBlacklist.getIsExit(), 1)) {
workerInfoService.updateWorkerExit(new MapBuilder<String, Object>()
.put("workerIdStr", workerBlacklist.getWorkerId())
.build());
} else {
if (workerInfo != null) {
workerInfo.setInserviceType(1);
workerInfo.setReEntry(1);
workerInfoService.editWorkerInfo(workerInfo);
}
}
}
return workerBlacklist;
}
} }

View File

@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -199,15 +200,17 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
} }
//1. 计算工时 //1. 计算工时
BigDecimal hour = null;
if (ruleV2 != null && ruleV2.getHourType() != null) { if (ruleV2 != null && ruleV2.getHourType() != null) {
BigDecimal hour = getCalHour(personSn, date, ruleV2, attendances, allAttendances); hour = getCalHour(personSn, date, ruleV2, attendances, allAttendances, null, null);
sta.setHourVal(hour);
} }
sta.setHourVal(hour);
//2.计算工日 //2.计算工日
BigDecimal day = null;
if (ruleV2 != null && ruleV2.getDayType() != null) { if (ruleV2 != null && ruleV2.getDayType() != null) {
Integer dayType = ruleV2.getDayType(); Integer dayType = ruleV2.getDayType();
BigDecimal day = BigDecimal.ZERO; day = BigDecimal.ZERO;
if (dayType == 1) { if (dayType == 1) {
//1:一天一打卡; //1:一天一打卡;
List<CalAttendanceBo> attendanceBoList = allAttendances.stream().filter(o -> Objects.equals(o.getPersonSn(), personSn) && DateUtil.isSameDay(date, o.getDate())).collect(Collectors.toList()); List<CalAttendanceBo> attendanceBoList = allAttendances.stream().filter(o -> Objects.equals(o.getPersonSn(), personSn) && DateUtil.isSameDay(date, o.getDate())).collect(Collectors.toList());
@ -230,7 +233,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
// 3:工时段换算工日; // 3:工时段换算工日;
if (StrUtil.isNotBlank(ruleV2.getHour2dayJson())) { if (StrUtil.isNotBlank(ruleV2.getHour2dayJson())) {
//工时段换算工日; //工时段换算工日;
day = getCalHour2day(ruleV2.getHour2dayJson(), sta.getHourVal().intValue()); day = getCalHour2day(ruleV2.getHour2dayJson(), sta.getHourVal());
} }
} else if (dayType == 4) { } else if (dayType == 4) {
// 4:比例换算工日; // 4:比例换算工日;
@ -243,36 +246,32 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
} }
} }
} }
sta.setDayVal(day);
} }
sta.setDayVal(day);
BigDecimal overtimeHour = null;
BigDecimal overtimeDay = null;
if (ruleV2 != null && ruleV2.getIsOpenOvertime() == 1) { if (ruleV2 != null && ruleV2.getIsOpenOvertime() == 1) {
//3.计算加班工时 //3.计算加班工时
BigDecimal overtimeHour = BigDecimal.ZERO; overtimeHour = BigDecimal.ZERO;
if (Objects.equals(ruleV2.getOvertimeHourType(), 1)) { if (Objects.equals(ruleV2.getOvertimeHourType(), 1)) {
//1:超出规定工作时间的工时; //1:超出规定工作时间的工时;
if (sta.getHourVal().compareTo(new BigDecimal(ruleV2.getDailyHour())) > 0) { if (sta.getHourVal().compareTo(new BigDecimal(ruleV2.getDailyHour())) > 0) {
overtimeHour = sta.getHourVal().subtract(new BigDecimal(ruleV2.getDailyHour())); overtimeHour = sta.getHourVal().subtract(new BigDecimal(ruleV2.getDailyHour()));
} }
} else if (Objects.equals(ruleV2.getOvertimeHourType(), 2)) { } else if (Objects.equals(ruleV2.getOvertimeHourType(), 2) && ruleV2.getOvertimeHourStart() != null && ruleV2.getOvertimeHourEnd() != null && ruleV2.getHourType() != null) {
// 2:特定时间内的工时; // 2:特定时间内的工时;
if (ruleV2.getHourType() != null) { //跨域结束时间+1day
//跨域结束时间+1day Date overtimeStart = DateUtil.parseDateTime(DateUtil.formatDate(date) + " " + DateUtil.formatTime(ruleV2.getOvertimeHourStart()));
Date start = DateUtil.parseDateTime(DateUtil.formatDate(date) + " " + DateUtil.formatTime(ruleV2.getOvertimeHourStart())); Date endTemp = DateUtil.parseDateTime(DateUtil.formatDate(date) + " " + DateUtil.formatTime(ruleV2.getOvertimeHourEnd()));
Date end = DateUtil.parseDateTime(DateUtil.formatDate(date) + " " + DateUtil.formatTime(ruleV2.getOvertimeHourEnd())); Date overtimeEnd = DateUtil.compare(overtimeStart, endTemp) <= 0 ? endTemp : DateUtil.offsetDay(endTemp, 1);
Date hourEnd = DateUtil.compare(start, end) <= 0 ? end : DateUtil.offsetDay(end, 1); overtimeHour = getCalHour(personSn, date, ruleV2, attendances, allAttendances, overtimeStart, overtimeEnd);
List<CalAttendanceBo> list1 = attendances.stream().filter(bo -> DateUtil.compare(bo.getDate(), start) >= 0 &&
DateUtil.compare(bo.getDate(), hourEnd) <= 0).collect(Collectors.toList());
List<CalAttendanceBo> list2 = allAttendances.stream().filter(bo -> DateUtil.compare(bo.getDate(), start) >= 0 &&
DateUtil.compare(bo.getDate(), hourEnd) <= 0).collect(Collectors.toList());
overtimeHour = getCalHour(personSn, date, ruleV2, list1, list2);
}
} }
sta.setOvertimeHourVal(overtimeHour);
//4.计算加班工日 //4.计算加班工日
BigDecimal overtimeDay = BigDecimal.ZERO; overtimeDay = BigDecimal.ZERO;
if (Objects.equals(ruleV2.getOvertimeDayType(), 1) && StrUtil.isNotBlank(ruleV2.getOvertimeHour2dayJson())) { if (Objects.equals(ruleV2.getOvertimeDayType(), 1) && StrUtil.isNotBlank(ruleV2.getOvertimeHour2dayJson())) {
//加班工时段换算工日; //加班工时段换算工日;
overtimeDay = getCalHour2day(ruleV2.getOvertimeHour2dayJson(), sta.getHourVal().intValue()); overtimeDay = getCalHour2day(ruleV2.getOvertimeHour2dayJson(), sta.getHourVal());
} else { } else {
// 加班比例换算工日; // 加班比例换算工日;
if (ruleV2.getOvertimeRatio2dayDay() != null && ruleV2.getOvertimeRatio2dayHour() != null && sta.getHourVal() != null && ruleV2.getOvertimeRatio2dayHour() != 0) { if (ruleV2.getOvertimeRatio2dayDay() != null && ruleV2.getOvertimeRatio2dayHour() != null && sta.getHourVal() != null && ruleV2.getOvertimeRatio2dayHour() != 0) {
@ -284,8 +283,9 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
} }
} }
} }
sta.setOvertimeDayVal(overtimeDay);
} }
sta.setOvertimeHourVal(overtimeHour);
sta.setOvertimeDayVal(overtimeDay);
//5.计算考勤 //5.计算考勤
sta.setProjectSn(projectSn); sta.setProjectSn(projectSn);
@ -295,22 +295,32 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
if (sta.getId() == null) { if (sta.getId() == null) {
this.save(sta); this.save(sta);
} else { } else {
this.updateById(sta); this.update(new LambdaUpdateWrapper<WorkerDailyAttendanceStatisticsV2>()
.set(WorkerDailyAttendanceStatisticsV2::getHourVal, sta.getHourVal())
.set(WorkerDailyAttendanceStatisticsV2::getDayVal, sta.getDayVal())
.set(WorkerDailyAttendanceStatisticsV2::getIsAttendance, sta.getIsAttendance())
.set(WorkerDailyAttendanceStatisticsV2::getOvertimeHourVal, sta.getOvertimeHourVal())
.set(WorkerDailyAttendanceStatisticsV2::getOvertimeDayVal, sta.getOvertimeDayVal())
.eq(WorkerDailyAttendanceStatisticsV2::getId, sta.getId())
);
} }
} }
/** /**
* 获取工时段换算工日 * 获取工时段换算工日
* *
* @param ruleV2 * @param json
* @param hourVal * @param hourVal
* @return * @return
*/ */
private BigDecimal getCalHour2day(String ruleV2, int hourVal) { private BigDecimal getCalHour2day(String json, BigDecimal hourVal) {
if (hourVal == null) {
return null;
}
BigDecimal overtimeDay = BigDecimal.ZERO; BigDecimal overtimeDay = BigDecimal.ZERO;
List<Hour2dayJsonBo> list = JSON.parseArray(ruleV2, Hour2dayJsonBo.class); List<Hour2dayJsonBo> list = JSON.parseArray(json, Hour2dayJsonBo.class);
if (CollUtil.isNotEmpty(list)) { if (CollUtil.isNotEmpty(list)) {
overtimeDay = list.stream().filter(bo -> hourVal >= bo.getHourMin() && hourVal <= bo.getHourMax()).findFirst().map(Hour2dayJsonBo::getDay).orElse(BigDecimal.ZERO); overtimeDay = list.stream().filter(bo -> hourVal.compareTo(new BigDecimal(bo.getHourMin())) >= 0 && hourVal.compareTo(new BigDecimal(bo.getHourMax())) <= 0).findFirst().map(Hour2dayJsonBo::getDay).orElse(BigDecimal.ZERO);
} }
return overtimeDay; return overtimeDay;
} }
@ -323,16 +333,26 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
* @param ruleV2 * @param ruleV2
* @param attendances * @param attendances
* @param allAttendances * @param allAttendances
* @param overtimeStart 加班开始时间
* @param overtimeEnd 加班结束时间
* @return * @return
*/ */
private BigDecimal getCalHour(String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances) { private BigDecimal getCalHour(String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances, Date overtimeStart, Date overtimeEnd) {
Integer hourType = ruleV2.getHourType(); Integer hourType = ruleV2.getHourType();
BigDecimal hour = BigDecimal.ZERO; BigDecimal hour = BigDecimal.ZERO;
if (Objects.equals(hourType, 1)) { if (Objects.equals(hourType, 1)) {
//1:末减初; //1:末减初;
if (allAttendances.size() >= 2) { if (allAttendances.size() >= 2) {
long betweenMs = DateUtil.betweenMs(allAttendances.get(0).getDate(), allAttendances.get(allAttendances.size() - 1).getDate()); Date beginDate = allAttendances.get(0).getDate();
hour = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 1, RoundingMode.HALF_UP); Date endDate = allAttendances.get(allAttendances.size() - 1).getDate();
if (overtimeStart != null && overtimeEnd != null) {
beginDate = DateUtil.compare(beginDate, overtimeStart) >= 0 ? beginDate : overtimeStart;
endDate = DateUtil.compare(endDate, overtimeEnd) >= 0 ? overtimeEnd : endDate;
}
if (DateUtil.compare(beginDate, endDate) < 0) {
long betweenMs = DateUtil.betweenMs(beginDate, endDate);
hour = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 1, RoundingMode.HALF_UP);
}
} }
} else if (Objects.equals(hourType, 2)) { } else if (Objects.equals(hourType, 2)) {
//2:时间段累加; //2:时间段累加;
@ -378,9 +398,17 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
if (attendanceBos.get(i).getPassType() != 2) { if (attendanceBos.get(i).getPassType() != 2) {
continue; continue;
} }
long betweenMs = DateUtil.betweenMs(attendanceBos.get(i - 1).getDate(), attendanceBos.get(i).getDate()); Date beginDate = attendanceBos.get(i - 1).getDate();
BigDecimal hours = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 1, RoundingMode.HALF_UP); Date endDate = attendanceBos.get(i).getDate();
hour = hour.add(hours); if (overtimeStart != null && overtimeEnd != null) {
beginDate = DateUtil.compare(beginDate, overtimeStart) >= 0 ? beginDate : overtimeStart;
endDate = DateUtil.compare(endDate, overtimeEnd) >= 0 ? overtimeEnd : endDate;
}
if (DateUtil.compare(beginDate, endDate) < 0) {
long betweenMs = DateUtil.betweenMs(beginDate, endDate);
BigDecimal hours = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 1, RoundingMode.HALF_UP);
hour = hour.add(hours);
}
} }
} }
} }
@ -404,7 +432,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
.le(WorkerAttendance::getCreateTime, DateUtil.offsetDay(endTime, 1)) .le(WorkerAttendance::getCreateTime, DateUtil.offsetDay(endTime, 1))
.select(WorkerAttendance::getCreateTime, WorkerAttendance::getPassType, WorkerAttendance::getProjectSn, WorkerAttendance::getPersonSn) .select(WorkerAttendance::getCreateTime, WorkerAttendance::getPassType, WorkerAttendance::getProjectSn, WorkerAttendance::getPersonSn)
.orderByAsc(WorkerAttendance::getCreateTime) .orderByAsc(WorkerAttendance::getCreateTime)
); ).stream().filter(workerAttendance -> StrUtil.isNotBlank(workerAttendance.getPersonSn())).collect(Collectors.toList());
List<CalAttendanceBo> allAttendances = attendanceDbs.stream().map(o -> { List<CalAttendanceBo> allAttendances = attendanceDbs.stream().map(o -> {
CalAttendanceBo bo = new CalAttendanceBo(); CalAttendanceBo bo = new CalAttendanceBo();
bo.setPersonSn(o.getPersonSn()); bo.setPersonSn(o.getPersonSn());