每个工程分配一个合同修改

This commit is contained in:
方亮 2025-10-31 13:39:48 +08:00
parent aa3c652efb
commit f0248a1079
18 changed files with 158 additions and 76 deletions

View File

@ -1,5 +1,6 @@
package com.bonus.bmw.controller;
import com.bonus.bmw.domain.dto.PmWorkerDto;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
import com.bonus.bmw.service.BmWorkerWageCardService;
@ -125,14 +126,30 @@ public class BmWorkerWageCardController extends BaseController {
/**
* 更新人员红绿灯状态
* @param id
* @param o
* @return
*/
@PostMapping("/light/{id}")
@PostMapping("/light")
@SysLog(title = "更新人员红绿灯", businessType = OperaType.DELETE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "更新人员红绿灯")
public AjaxResult light(@PathVariable("id") Integer id) {
public AjaxResult light(@RequestBody PmWorkerDto o) {
try {
return service.updateLightByWorkerId(id);
return service.updateLightByWorkerId(o.getWorkerId(),o.getProId());
} catch (Exception e) {
logger.error(e.toString(), e);
return error("系统异常,请联系管理员");
}
}
/**
* 更新人员红绿灯状态
* @param o
* @return
*/
@PostMapping("/wageLight")
@SysLog(title = "更新人员红绿灯", businessType = OperaType.DELETE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "更新人员红绿灯")
public AjaxResult wageLight(@RequestBody PmWorkerDto o) {
try {
return service.updateWageLight(o.getWorkerId());
} catch (Exception e) {
logger.error(e.toString(), e);
return error("系统异常,请联系管理员");

View File

@ -103,12 +103,12 @@ public class PmWorkerController extends BaseController {
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:ein:query"))
@PostMapping("/select/{id}/{proId}")
@PostMapping("/select")
@SysLog(title = "查询人员入场信息", businessType = OperaType.QUERY, logType = 0, module = "施工人员->出入场管理->人员入场管理", details = "查询人员入场信息")
public AjaxResult select(@PathVariable("id") Integer id,@PathVariable("proId") Integer proId) {
public AjaxResult select(@RequestBody PmWorkerDto o) {
try {
AjaxResult ajax = AjaxResult.success();
PmWorker worker = service.selectByPrimaryKey(id,proId);
PmWorker worker = service.selectByPrimaryKey(o.getId(),o.getProId());
ajax.put("data", worker);
return ajax;
} catch (Exception e) {
@ -337,9 +337,25 @@ public class PmWorkerController extends BaseController {
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:ein:insert"))
@PostMapping("/insertProEin")
@SysLog(title = "新增工程入场", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->人员入场管理", details = "新增工程入场")
public AjaxResult insertProEin(@RequestBody PmWorker o) {
public AjaxResult insertProEin(@RequestParam(value = "files",required = false) MultipartFile[] files, @RequestParam(value = "fileMsg")String fileMsg, @RequestParam(value = "params")String params) {
try {
return service.insertProEin(o);
params= Sm4Utils.decrypt(params);
fileMsg= Sm4Utils.decrypt(fileMsg);
List<WebFileDto> listFile = new ArrayList<>();
if(files != null && files.length > 0){
listFile = FastJsonHelper.jsonArrStrToBeanList(fileMsg, WebFileDto.class);
// 验证对应关系
if (listFile.size() != files.length) {
logger.error("文件信息:{}文件数量:{}", listFile.size(), files.length);
throw new IllegalArgumentException("文件信息与文件数量不匹配");
}
//先将数据对应关系处理
for (int i = 0; i < listFile.size(); i++) {
listFile.get(i).setFile(files[i]);
}
}
PmWorker o = FastJsonHelper.jsonStrToBean(params, PmWorker.class);
return service.insertProEin(o,listFile);
} catch (Exception e) {
logger.error(e.toString(), e);
}

View File

@ -101,4 +101,9 @@ public class BmWorkerWageCard {
private String photoIds;
private Integer proId;
private Integer contractId;
}

View File

@ -43,14 +43,14 @@ public interface BmWorkerContractMapper {
*/
BmWorkerContract selectContractListByWorkerIdAndValid(BmWorkerContract o);
int deleteByWorkerId(Integer id);
int deleteByWorkerId(@Param("workerId") Integer id,@Param("proId") Integer proId);
/**
* 更新 Ein 记录的关联合同ID
* @param id
* @param workerId
*/
void updateEinRecordContractId(@Param("contractId") Integer id,@Param("workerId") Integer workerId);
void updateEinRecordContractId(@Param("contractId") Integer id,@Param("workerId") Integer workerId,@Param("proId") Integer proId);
/**
* 获取合同
@ -65,4 +65,4 @@ public interface BmWorkerContractMapper {
* @param workerId
*/
void updateEinDayRecordContractId(@Param("oldContractId") Integer id,@Param("workerId") Integer workerId,@Param("contractId") Integer contractId);
}
}

View File

@ -48,9 +48,9 @@ public interface BmWorkerWageCardMapper {
*/
int updateByPrimaryKeySelective(BmWorkerWageCard record);
int selectWageCardAndContract(Integer id);
int selectWageCardAndContract(@Param("workerId") Integer workerId,@Param("proId") Integer proId);
int updateEinMsgByWorkerId(@Param("workerId") Integer id,@Param("lightStatus") Integer lightStatus,@Param("lightDate") String lightDate);
int updateEinMsgByWorkerId(@Param("workerId") Integer id,@Param("proId") Integer proId, @Param("lightStatus") Integer lightStatus,@Param("lightDate") String lightDate);
/**
* select by primary key
@ -67,4 +67,6 @@ public interface BmWorkerWageCardMapper {
* @return deleteCount
*/
void deleteByWorkerId(Integer workerId);
}
List<BmWorkerWageCard> selectWageCardAndContractList(Integer workerId);
}

View File

@ -1,9 +1,7 @@
package com.bonus.bmw.service;
import com.bonus.bmw.domain.dto.FileBasicMsgDto;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.vo.BmWorkerContract;
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
@ -22,7 +20,7 @@ public interface BmWorkerContractService{
* @param id
* @return
*/
int deleteByWorkerId(Integer id);
int deleteByWorkerId(Integer id, Integer proId);
/**
* 修改合同

View File

@ -2,7 +2,6 @@ package com.bonus.bmw.service;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
import com.bonus.bmw.domain.vo.PmWorker;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
@ -46,10 +45,11 @@ public interface BmWorkerWageCardService {
/**
* 更新人员红绿灯
* @param id
* @param workId
* @param proId
* @return
*/
AjaxResult updateLightByWorkerId(Integer id);
AjaxResult updateLightByWorkerId(Integer workId,Integer proId);
/**
* 查询文件
@ -71,5 +71,7 @@ public interface BmWorkerWageCardService {
* @return
*/
void deleteByWorkerId(Integer workerId);
AjaxResult updateWageLight(Integer workerId);
}

View File

@ -43,5 +43,5 @@ public interface PmWorkerService{
*/
List<PmWorker> selectEinListByWorkerId(PmWorkerDto o);
AjaxResult insertProEin(PmWorker o);
AjaxResult insertProEin(PmWorker o, List<WebFileDto> listFile);
}

View File

@ -227,7 +227,7 @@ public class AppServiceImpl implements AppService {
PmWorkerDto data=pmWorkerExitMapper.getPmWorkInfo(record);
Boolean isShangHai = pmWorkerExitMapper.getProLocationByProId(record.getProId());
if(isShangHai == null || !isShangHai){
int m = contractMapper.deleteByWorkerId(record.getWorkerId());
int m = contractMapper.deleteByWorkerId(record.getWorkerId(),record.getProId());
}
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = pmWorkerExitMapper.getEinProNum(record.getWorkerId());
@ -344,7 +344,7 @@ public class AppServiceImpl implements AppService {
}
int insert = contractMapper.insert(record);
//属于废弃上一个合同重新签一个需要修改掉之前考情绑定
contractMapper.updateEinDayRecordContractId(oldContractId, record.getWorkerId(), record.getId());
// contractMapper.updateEinDayRecordContractId(oldContractId, record.getWorkerId(), record.getId());
if (insert > 0) {
if (!StringUtils.isEmpty(record.getPhotoIds())) {
String[] split = record.getPhotoIds().split(",");
@ -355,7 +355,7 @@ public class AppServiceImpl implements AppService {
}
}
//将合同id保存到入场表和入场实时表
contractMapper.updateEinRecordContractId(record.getId(), record.getWorkerId());
contractMapper.updateEinRecordContractId(record.getId(), record.getWorkerId(), record.getProId());
}
private void updateWageCard(BmWorkerWageCard record) {

View File

@ -1,25 +1,20 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.dto.FileBasicMsgDto;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.vo.BmWorkerContract;
import com.bonus.bmw.mapper.BmWorkerContractMapper;
import com.bonus.bmw.service.BmWorkerContractService;
import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.system.api.model.UploadFileVo;
import lombok.val;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import com.bonus.bmw.mapper.BmWorkerContractMapper;
import com.bonus.bmw.domain.vo.BmWorkerContract;
import com.bonus.bmw.service.BmWorkerContractService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collections;
import java.util.List;
@Service
@ -37,8 +32,8 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{
}
@Override
public int deleteByWorkerId(Integer id) {
return mapper.deleteByWorkerId(id);
public int deleteByWorkerId(Integer id, Integer proId) {
return mapper.deleteByWorkerId(id,proId);
}
/**
@ -70,8 +65,8 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{
oldContractId = record.getId();
}
int insert = mapper.insert(record);
//属于废弃上一个合同重新签一个需要修改掉之前考情绑定
mapper.updateEinDayRecordContractId(oldContractId,record.getWorkerId(), record.getId());
// //属于废弃上一个合同重新签一个需要修改掉之前考情绑定
// mapper.updateEinDayRecordContractId(oldContractId,record.getWorkerId(), record.getId());
if(insert > 0){
//组装数据
MultipartFile[] workerFiles = new MultipartFile[listFile.size()];
@ -83,7 +78,7 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{
List<UploadFileVo> uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_CONTRACT, record.getId().toString(), type,"", "");
}
//将合同id保存到入场表和入场实时表
mapper.updateEinRecordContractId(record.getId(),record.getWorkerId());
mapper.updateEinRecordContractId(record.getId(),record.getWorkerId(), record.getProId());
return insert;
}
@ -124,7 +119,6 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", o.getId().toString(), Constants.FILE_UPLOAD_CONTRACT, "");
bmWorkerContracts.get(0).setFiles(contractFile);
}
return bmWorkerContracts;
}

View File

@ -127,9 +127,9 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService {
}
@Override
public AjaxResult updateLightByWorkerId(Integer id) {
public AjaxResult updateLightByWorkerId(Integer workerId,Integer proId) {
//查询工资卡和合同是不是存在
int i = selectWageCardAndContract(id);
int i = selectWageCardAndContract(workerId,proId);
//黄灯
int lightStatus = 1;
String now = DateUtil.now();
@ -138,10 +138,26 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService {
lightStatus = 2;
now = "";
}
int j = mapper.updateEinMsgByWorkerId(id, lightStatus, now);
int j = mapper.updateEinMsgByWorkerId(workerId, proId, lightStatus, now);
return AjaxResult.success(j);
}
@Override
public AjaxResult updateWageLight(Integer workerId) {
List<BmWorkerWageCard> list = mapper.selectWageCardAndContractList(workerId);
for (BmWorkerWageCard wageCard : list) {
//黄灯
int lightStatus = 1;
String now = DateUtil.now();
if(wageCard.getId() != null && wageCard.getId()>0 && wageCard.getContractId() != null && wageCard.getContractId()>0){
lightStatus = 2;
}
int j = mapper.updateEinMsgByWorkerId(workerId, wageCard.getProId(), lightStatus, now);
}
return AjaxResult.success();
}
@Override
public AjaxResult lookFileByPrimaryKey(Integer id) {
List<UploadFileVo> contractFile = fileUploadUtils.getFileList("", id.toString(), Constants.FILE_UPLOAD_WAGE_CARD, "");
@ -163,8 +179,10 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService {
mapper.deleteByWorkerId(workerId);
}
private int selectWageCardAndContract(Integer id) {
return mapper.selectWageCardAndContract(id);
private int selectWageCardAndContract(Integer workerId,Integer proId) {
return mapper.selectWageCardAndContract(workerId,proId);
}
}

View File

@ -62,10 +62,8 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
List<MapBeanVo> list = mapper.getContractIdAndWageCard(record.getWorkerId());
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){
if(isShangHai == null || !isShangHai){
//上海外删除合同
int i = contractService.deleteByWorkerId(record.getWorkerId());
}
contractService.deleteByWorkerId(record.getWorkerId(),record.getProId());
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = mapper.getEinProNum(record.getWorkerId());
//删除实时在场
@ -131,10 +129,7 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
if("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue())) {
//查询是否上海外
Boolean isShangHai = mapper.getProLocationByProId(bean.getProId());
if(isShangHai == null || !isShangHai){
//上海外删除合同
int i = contractService.deleteByWorkerId(bean.getWorkerId());
}
int i = contractService.deleteByWorkerId(bean.getWorkerId(),bean.getProId());
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = mapper.getEinProNum(bean.getWorkerId());
//删除实时在场

View File

@ -189,6 +189,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractStartDate())){
bmWorkerContract.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
bmWorkerContract.setWorkerId(record.getId());
bmWorkerContract.setProId(record.getProId());
List<WebFileDto> collect = fileMsg.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList());
contractService.updateByPrimaryKey(bmWorkerContract,collect);
record.setContractId(bmWorkerContract.getId());
@ -212,6 +213,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
//查询合同数据 只有入场才会有合同(上海内可以在未入场有合同)
BmWorkerContract contract = new BmWorkerContract();
contract.setWorkerId(id);
contract.setProId(worker.getProId());
BmWorkerContract workerContract = contractService.selectContractListByWorkerIdAndValid(contract);
worker.setBmWorkerContract(workerContract);
// }
@ -237,6 +239,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
//查询合同数据 只有入场才会有合同
BmWorkerContract contract = new BmWorkerContract();
contract.setWorkerId(worker.getId());
contract.setProId(worker.getProId());
BmWorkerContract workerContract = contractService.selectContractListByWorkerIdAndValid(contract);
worker.setBmWorkerContract(workerContract);
@ -260,24 +263,32 @@ public class PmWorkerServiceImpl implements PmWorkerService{
/**
* 添加工程入场数据
* @param o
* @param record
* @param listFile
* @return
*/
@Override
public AjaxResult insertProEin(PmWorker o) {
public AjaxResult insertProEin(PmWorker record, List<WebFileDto> listFile) {
//是否失信人员名单
PmWorker worker2 = mapper.getBlackWorkerByNumber(o.getIdNumber());
PmWorker worker2 = mapper.getBlackWorkerByNumber(record.getIdNumber());
if(worker2 != null && worker2.getName() != null){
return new AjaxResult(500, worker2.getName()+"施工人员在失信人员名单,无法入场");
}
//先查到现在的合同id
Integer contractId = mapper.getContractIdByWorkerId(o.getId());
o.setContractId(contractId);
addEinRecord(o);
//存储合同id
BmWorkerContract bmWorkerContract = record.getBmWorkerContract();
if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractStartDate())){
bmWorkerContract.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
bmWorkerContract.setWorkerId(record.getId());
bmWorkerContract.setProId(record.getProId());
List<WebFileDto> collect = listFile.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList());
contractService.updateByPrimaryKey(bmWorkerContract,collect);
record.setContractId(bmWorkerContract.getId());
}
addEinRecord(record);
StringBuilder sb = new StringBuilder();
//下发人脸到考勤机
try {
urkSendService.sendUserToDevice(o.getId(),o.getProId(),o.getSubId(), o.getTeamId(),"0");
urkSendService.sendUserToDevice(record.getId(),record.getProId(),record.getSubId(), record.getTeamId(),"0");
sb.append("新增工程入场成功,人员下发考勤机成功--");
return AjaxResult.success(sb.toString());
} catch (Exception e) {

View File

@ -36,14 +36,14 @@
<delete id="deleteByWorkerId" parameterType="java.lang.Integer">
update bm_worker_contract set is_active = 0
where worker_id = #{workerId} and is_active = 1
where worker_id = #{workerId} and pro_id = #{proId} and is_active = 1
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.bonus.bmw.domain.vo.BmWorkerContract" useGeneratedKeys="true">
insert into bm_worker_contract (worker_id, contract_code, contract_term_type, contract_start_date,
insert into bm_worker_contract (worker_id, pro_id, contract_code, contract_term_type, contract_start_date,
contract_stop_date, wage_approved_way, wage_criterion, day_rate, contract_upload_date,
contract_invalid_date, create_user)
values (#{workerId}, #{contractCode}, #{contractTermType}, #{contractStartDate},
values (#{workerId}, #{proId}, #{contractCode}, #{contractTermType}, #{contractStartDate},
#{contractStopDate}, #{wageApprovedWay}, #{wageCriterion}, #{dayRate}, #{contractUploadDate},
#{contractInvalidDate}, #{createUser})
</insert>
@ -53,6 +53,7 @@
pw.id as worker_id,
pw.`name`,
pw.id_number,
bwem.pro_id,
bwem.pro_name,
bwem.sub_name,
bwem.team_name,
@ -64,7 +65,7 @@
FROM
pm_worker pw
LEFT JOIN bm_worker_ein_msg bwem ON bwem.worker_id = pw.id
LEFT JOIN bm_worker_contract bwc ON pw.id = bwc.worker_id AND bwc.is_active = 1
LEFT JOIN bm_worker_contract bwc ON pw.id = bwc.worker_id and bwc.pro_id = bwem.pro_id AND bwc.is_active = 1
LEFT JOIN pm_project pp on pp.id = bwem.pro_id
WHERE pw.is_active = 1
<if test="name != null">
@ -113,12 +114,15 @@
bwepr.sub_name
FROM
bm_worker_contract bwc
left join bm_worker_ein_pro_record bwepr on bwc.worker_id = bwepr.worker_id and bwc.id = bwepr.contract_id
left join bm_worker_ein_pro_record bwepr on bwc.worker_id = bwepr.worker_id and bwc.id = bwepr.contract_id and bwc.pro_id = bwepr.pro_id
<where>
bwepr.pro_name is not null
<if test="workerId != null">
AND bwc.worker_id = #{workerId}
</if>
<if test="proId != null">
AND bwc.pro_id = #{proId}
</if>
<if test="id != null">
AND bwc.id = #{id}
</if>
@ -146,6 +150,9 @@
<if test="workerId != null">
AND bwc.worker_id = #{workerId}
</if>
<if test="proId != null">
AND bwc.pro_id = #{proId}
</if>
<if test="id != null">
AND bwc.id = #{id}
</if>
@ -157,9 +164,9 @@
<update id="updateEinRecordContractId">
update bm_worker_ein_pro_record set contract_id = #{contractId}
where worker_id = #{workerId} and is_active = 1 and is_last = 1;
where worker_id = #{workerId} and pro_id = #{proId} and is_active = 1 and is_last = 1;
update bm_worker_ein_msg set contract_id = #{contractId}
where worker_id = #{workerId};
where worker_id = #{workerId} and pro_id = #{proId};
</update>
<select id="selectContractListById" resultMap="BaseResultMap">

View File

@ -15,6 +15,8 @@
<result column="name" property="name" />
<result column="id_number" property="idNumber" />
<result column="is_upload" property="isUpload" />
<result column="pro_id" property="proId"/>
<result column="contract_id" property="contractId"/>
</resultMap>
<sql id="Base_Column_List">
id, worker_id, bank_card_code, bank_name, bank_branch_name, create_user, update_user
@ -130,14 +132,14 @@
SELECT
count(1) as num
FROM
`bm_worker_contract` where is_active = 1 and worker_id = #{workerId}
`bm_worker_contract` where is_active = 1 and worker_id = #{workerId} and pro_id = #{proId}
) t
</select>
<update id="updateEinMsgByWorkerId">
update bm_worker_ein_msg
set light_status = #{lightStatus},yellow_date = #{lightDate}
where worker_id = #{workerId}
where worker_id = #{workerId} and pro_id = #{proId}
</update>
<select id="selectByPrimaryKey" resultMap="BaseResultMap">
@ -157,4 +159,16 @@
delete from bm_worker_wage_card
where worker_id = #{workerId}
</delete>
</mapper>
<select id="selectWageCardAndContractList" resultMap="BaseResultMap">
SELECT
bwc.pro_id,
bwc.worker_id,
bwc.id as contract_id,
bwwc.id
FROM
`bm_worker_contract` bwc
left join `bm_worker_wage_card` bwwc on bwc.worker_id = bwwc.worker_id and bwc.is_active = 1
where bwc.is_active = 1 and bwc.worker_id = #{workerId}
</select>
</mapper>

View File

@ -394,6 +394,6 @@
'合同' as `key`,
count(1) as `value`
FROM
`bm_worker_contract` where is_active = 1 and worker_id = #{id}
`bm_worker_contract` where is_active = 1 and worker_id = #{id} and pro_id = #{proId}
</select>
</mapper>

View File

@ -36,6 +36,7 @@ public class WorkerEinDayRecordTask{
//更新指定日期的记录
updateWorkerEinDayRecord(dateList);
updateWorkerContract();
//当天合同以最新的为准
}catch (Exception e){
logger.error("人员入场更新表失败,{}",e.getMessage());
}

View File

@ -377,25 +377,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getNoContractWorker" resultType="com.bonus.job.domain.PmWorkerJob">
SELECT
aa.worker_id,
aa.pro_id,
bb.id as contract_id
from
(
SELECT
DISTINCT
worker_id
worker_id,
pro_id
FROM
bm_worker_ein_day_record
WHERE
contract_id IS NULL) aa
LEFT JOIN bm_worker_contract bb ON aa.worker_id = bb.worker_id and bb.is_active = 1
LEFT JOIN bm_worker_contract bb ON aa.worker_id = bb.worker_id and bb.pro_id = aa.pro_id and bb.is_active = 1
WHERE bb.id is not null
GROUP BY aa.worker_id
GROUP BY aa.worker_id, aa.pro_id
</select>
<update id="updateWorkerContractByList">
<foreach item="item" collection="list" index="index" separator=";">
update bm_worker_ein_day_record set contract_id = #{item.contractId} where worker_id = #{item.workerId} and contract_id is null
update bm_worker_ein_day_record set contract_id = #{item.contractId} where worker_id = #{item.workerId} and pro_id = #{item.proId} and contract_id is null
</foreach>
</update>
</mapper>