Merge remote-tracking branch 'origin/main'

This commit is contained in:
haozq 2025-12-30 15:16:49 +08:00
commit 17618cc0ad
9 changed files with 38 additions and 51 deletions

View File

@ -33,7 +33,7 @@ public interface PmWorkerExitMapper {
* @param einStatus * @param einStatus
* @return * @return
*/ */
int updateEinProRecordStatus(@Param("id") Integer id,@Param("einStatus") Integer einStatus,@Param("isUploadFile") Integer isUploadFile,@Param("exitWay") String exitWay,@Param("isLast") String isLast); int updateEinProRecordStatus(@Param("id") Integer id,@Param("einStatus") Integer einStatus,@Param("isUploadFile") Integer isUploadFile,@Param("exitWay") String exitWay);
List<PmWorker> selectWorkListByWorkerId(PmWorkerDto o); List<PmWorker> selectWorkListByWorkerId(PmWorkerDto o);

View File

@ -81,7 +81,7 @@ public interface PmWorkerMapper {
* @param id * @param id
* @return * @return
*/ */
void updateEinRecordLast(Integer id); void updateEinRecordLast(PmWorker o);
/** /**
* update record * update record

View File

@ -241,7 +241,7 @@ public class AppServiceImpl implements AppService {
addWorkerWageCardDataAndContract(record); addWorkerWageCardDataAndContract(record);
}else { }else {
//重新入场 再入场清除最新标识 //重新入场 再入场清除最新标识
pmWorkerMapper.updateEinRecordLast(record.getId()); pmWorkerMapper.updateEinRecordLast(record);
//换工程没换人脸 //换工程没换人脸
urkSendService.sendUserToDevice(record.getId(),record.getProId(), record.getSubId(), record.getTeamId(),"0"); urkSendService.sendUserToDevice(record.getId(),record.getProId(), record.getSubId(), record.getTeamId(),"0");
addWorkerEinData(record); addWorkerEinData(record);
@ -253,15 +253,10 @@ public class AppServiceImpl implements AppService {
public AjaxResult appWorkerExit(PmWorkerDto record) throws Exception { public AjaxResult appWorkerExit(PmWorkerDto record) throws Exception {
//查询合同工资卡是否齐全 //查询合同工资卡是否齐全
List<MapBeanVo> list = pmWorkerExitMapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId()); List<MapBeanVo> list = pmWorkerExitMapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId());
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){ //没打过卡可以直接离场 20251226
//查询是否上海外 int z = pmWorkerExitMapper.selectAttByEinTimeAfter(record.getWorkerId(),record.getProId());
PmWorkerDto data=pmWorkerExitMapper.getPmWorkInfo(record); if(z == 0 || (Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0)){
Boolean isShangHai = pmWorkerExitMapper.getProLocationByProId(record.getProId()); contractMapper.deleteByWorkerId(record.getWorkerId(),record.getProId());
if(isShangHai == null || !isShangHai){
int m = contractMapper.deleteByWorkerId(record.getWorkerId(),record.getProId());
}
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = pmWorkerExitMapper.getEinProNum(record.getWorkerId());
//删除实时在场 //删除实时在场
int n = pmWorkerExitMapper.deleteEinMsgByWorkerId(record.getWorkerId(),record.getProId()); int n = pmWorkerExitMapper.deleteEinMsgByWorkerId(record.getWorkerId(),record.getProId());
//修改在场记录表状态 //修改在场记录表状态
@ -276,13 +271,9 @@ public class AppServiceImpl implements AppService {
} }
isUploadFile = 1; isUploadFile = 1;
} }
String isLast = ""; int k = pmWorkerExitMapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay());
if(Boolean.TRUE.equals(isShangHai) && number > 1){
isLast = "0";
}
int k = pmWorkerExitMapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay(),isLast);
if(k==1){ if(k==1){
delUrkUser(data, urkSendService); delUrkUser(record, urkSendService);
//删除app人脸 //删除app人脸
// delAppFace(record.getWorkerId()); // delAppFace(record.getWorkerId());
} }
@ -306,7 +297,7 @@ public class AppServiceImpl implements AppService {
} }
isUploadFile = 1; isUploadFile = 1;
} }
int k = pmWorkerExitMapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay(),""); int k = pmWorkerExitMapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay());
return k>0 ? AjaxResult.success() :AjaxResult.error("离场失败"); return k>0 ? AjaxResult.success() :AjaxResult.error("离场失败");
} }

View File

@ -6,10 +6,7 @@ import com.bonus.bmw.domain.po.FaceRecognitionBean;
import com.bonus.bmw.domain.vo.MapBeanVo; import com.bonus.bmw.domain.vo.MapBeanVo;
import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.bmw.domain.vo.PmWorker;
import com.bonus.bmw.mapper.PmWorkerExitMapper; import com.bonus.bmw.mapper.PmWorkerExitMapper;
import com.bonus.bmw.service.AppRecognitionService; import com.bonus.bmw.service.*;
import com.bonus.bmw.service.BmWorkerContractService;
import com.bonus.bmw.service.PmWorkerExitService;
import com.bonus.bmw.service.UrkSendService;
import com.bonus.common.core.constant.Constants; import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.api.model.UploadFileVo; import com.bonus.system.api.model.UploadFileVo;
@ -32,6 +29,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
@Autowired @Autowired
private BmWorkerContractService contractService; private BmWorkerContractService contractService;
@Autowired
private TbProConfigService configService;
@Resource @Resource
private AppRecognitionService appRecognitionService; private AppRecognitionService appRecognitionService;
@ -56,16 +56,12 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
@Override @Override
public AjaxResult updateWorkerExit(PmWorkerDto record, List<WebFileDto> listFile) throws Exception { public AjaxResult updateWorkerExit(PmWorkerDto record, List<WebFileDto> listFile) throws Exception {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
//查询是否上海外
Boolean isShangHai = mapper.getProLocationByProId(record.getProId());
//查询合同工资卡是否齐全 //查询合同工资卡是否齐全
List<MapBeanVo> list = mapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId()); List<MapBeanVo> list = mapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId());
//没打过卡可以直接离场 20251226 //没打过卡可以直接离场 20251226
int x = mapper.selectAttByEinTimeAfter(record.getWorkerId(),record.getProId()); int z = mapper.selectAttByEinTimeAfter(record.getWorkerId(),record.getProId());
if(x ==0 || (Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0)){ if(z == 0 || (Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0)){
contractService.deleteByWorkerId(record.getWorkerId(),record.getProId()); contractService.deleteByWorkerId(record.getWorkerId(),record.getProId());
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = mapper.getEinProNum(record.getWorkerId());
//删除实时在场 //删除实时在场
int n = mapper.deleteEinMsgByWorkerId(record.getWorkerId(), record.getProId()); int n = mapper.deleteEinMsgByWorkerId(record.getWorkerId(), record.getProId());
//修改在场记录表状态 //修改在场记录表状态
@ -83,12 +79,7 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
List<UploadFileVo> uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER_EXIT, record.getId().toString(), type,"", ""); List<UploadFileVo> uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER_EXIT, record.getId().toString(), type,"", "");
isUploadFile = 1; isUploadFile = 1;
} }
int k = mapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay());
String isLast = "";
if(Boolean.TRUE.equals(isShangHai) && number > 1){
isLast = "0";
}
int k = mapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay(),isLast);
if(k==1){ if(k==1){
try { try {
AppServiceImpl.delUrkUser(record, urkSendService); AppServiceImpl.delUrkUser(record, urkSendService);
@ -129,8 +120,6 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
//没打过卡可以直接离场 20251226 //没打过卡可以直接离场 20251226
int x = mapper.selectAttByEinTimeAfter(bean.getWorkerId(),bean.getProId()); int x = mapper.selectAttByEinTimeAfter(bean.getWorkerId(),bean.getProId());
if(x==0 || ("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue()))) { if(x==0 || ("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue()))) {
//查询是否上海外
Boolean isShangHai = mapper.getProLocationByProId(bean.getProId());
int i = contractService.deleteByWorkerId(bean.getWorkerId(),bean.getProId()); int i = contractService.deleteByWorkerId(bean.getWorkerId(),bean.getProId());
//查询是不是上海内最后一个在场工程一定要放在删除实时在场前查 //查询是不是上海内最后一个在场工程一定要放在删除实时在场前查
int number = mapper.getEinProNum(bean.getWorkerId()); int number = mapper.getEinProNum(bean.getWorkerId());
@ -139,11 +128,7 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
int einStatus = 2; int einStatus = 2;
//是否上传文件 //是否上传文件
int isUploadFile = 0; int isUploadFile = 0;
String isLast = ""; int k = mapper.updateEinProRecordStatus(bean.getId(), einStatus, isUploadFile, bean.getExitWay());
if(Boolean.TRUE.equals(isShangHai) && number > 1){
isLast = "0";
}
int k = mapper.updateEinProRecordStatus(bean.getId(), einStatus, isUploadFile, bean.getExitWay(),isLast);
if (k == 1) { if (k == 1) {
userId.add(bean.getWorkerId()); userId.add(bean.getWorkerId());
proId.add(bean.getProId()); proId.add(bean.getProId());
@ -195,7 +180,7 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
int einStatus = 0; int einStatus = 0;
//是否上传文件 //是否上传文件
int isUploadFile = 1; int isUploadFile = 1;
int k = mapper.updateEinProRecordStatus(o.getId(),einStatus,isUploadFile,o.getExitWay(),""); int k = mapper.updateEinProRecordStatus(o.getId(),einStatus,isUploadFile,o.getExitWay());
return !uploadFileVos.isEmpty() ?1:0; return !uploadFileVos.isEmpty() ?1:0;
} }
return 0; return 0;

View File

@ -469,7 +469,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
addWorkerWageCardDataAndContract(record,fileMsg); addWorkerWageCardDataAndContract(record,fileMsg);
}else { }else {
//重新入场 再入场清除最新标识 //重新入场 再入场清除最新标识
mapper.updateEinRecordLast(record.getId()); mapper.updateEinRecordLast(record);
//换工程没换人脸 //换工程没换人脸
try { try {
urkSendService.sendUserToDevice(record.getId(),record.getProId(),record.getSubId(), record.getTeamId(),"0"); urkSendService.sendUserToDevice(record.getId(),record.getProId(),record.getSubId(), record.getTeamId(),"0");

View File

@ -147,6 +147,8 @@ public class TbProConfigServiceImpl implements TbProConfigService {
/** /**
* 依据工程id查询 * 依据工程id查询
* tczm 是否需要退场证明 0 不需要 1 需要
* dgc 是否允许多工程入场 0 不允许 1 允许
* @param params * @param params
* @return * @return
*/ */

View File

@ -26,6 +26,9 @@
<result column="type" property="type"/> <result column="type" property="type"/>
</resultMap> </resultMap>
<!-- 1 - COALESCE(tbcr.is_need, 0) AS is_shanghai
反转 查询字段的结果isneed与is_shanghai相反为了不影响前端逻辑
-->
<select id="selectWorkList" resultMap="BaseResultMap"> <select id="selectWorkList" resultMap="BaseResultMap">
SELECT SELECT
pw.id as worker_id, pw.id as worker_id,
@ -48,11 +51,13 @@
bwepr.is_upload_file, bwepr.is_upload_file,
if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit, if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit,
bwepr.exit_time, bwepr.exit_time,
pp.is_shanghai 1 - COALESCE(tbcr.is_need, 0) AS is_shanghai
FROM FROM
pm_worker pw pm_worker pw
LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id
LEFT JOIN pm_project pp on pp.id = bwepr.pro_id LEFT JOIN pm_project pp on pp.id = bwepr.pro_id
left join tb_pro_config_real tbcr on tbcr.sub_id = pp.sub_com_id
and tbcr.pro_type = pp.pro_type and tbcr.pro_area = pp.is_shanghai and tbcr.type = 0
WHERE WHERE
pw.is_active = 1 And bwepr.is_last = 1 pw.is_active = 1 And bwepr.is_last = 1
<if test="name != null and name != ''"> <if test="name != null and name != ''">
@ -107,9 +112,6 @@
, ein_status = #{einStatus} , ein_status = #{einStatus}
, exit_time = NOW() , exit_time = NOW()
</if> </if>
<if test="isLast != null and isLast != '' ">
, is_last = #{isLast}
</if>
WHERE id = #{id} WHERE id = #{id}
</update> </update>
@ -127,10 +129,14 @@
bwepr.ein_status, bwepr.ein_status,
bwepr.is_upload_file, bwepr.is_upload_file,
if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit, if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) as days_since_exit,
bwepr.exit_time bwepr.exit_time,
1 - COALESCE(tbcr.is_need, 0) AS is_shanghai
FROM FROM
pm_worker pw pm_worker pw
LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id
LEFT JOIN pm_project pp on pp.id = bwepr.pro_id
left join tb_pro_config_real tbcr on tbcr.sub_id = pp.sub_com_id
and tbcr.pro_type = pp.pro_type and tbcr.pro_area = pp.is_shanghai and tbcr.type = 0
WHERE WHERE
pw.id = #{id} pw.id = #{id}
</select> </select>

View File

@ -163,7 +163,7 @@
</insert> </insert>
<update id="updateEinRecordLast"> <update id="updateEinRecordLast">
update bm_worker_ein_pro_record set is_last = 0 where worker_id = #{id} update bm_worker_ein_pro_record set is_last = 0 where worker_id = #{id} and pro_id = #{proId}
</update> </update>
<update id="updateByPrimaryKey"> <update id="updateByPrimaryKey">
@ -324,6 +324,7 @@
LEFT JOIN pm_project pp ON pp.id = bmew.pro_id LEFT JOIN pm_project pp ON pp.id = bmew.pro_id
WHERE WHERE
id_number = #{idNumber} and pw.is_active = 1 id_number = #{idNumber} and pw.is_active = 1
order by bmew.create_time DESC
limit 1 limit 1
</select> </select>

View File

@ -94,9 +94,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
pm_worker pw pm_worker pw
LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id LEFT JOIN bm_worker_ein_pro_record bwepr ON pw.id = bwepr.worker_id
left join pm_project pp on bwepr.pro_id = pp.id left join pm_project pp on bwepr.pro_id = pp.id
left join tb_pro_config_real tbcr on tbcr.sub_id = pp.sub_com_id
and tbcr.pro_type = pp.pro_type and tbcr.pro_area = pp.is_shanghai and tbcr.type = 0
WHERE WHERE
if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) > 30 if(is_upload_file=0,DATEDIFF(NOW(), exit_time),0) > 30
and bwepr.is_go_black = 0 and pp.is_shanghai = 0 and bwepr.is_go_black = 0 and tbcr.is_need = 1
</select> </select>
<insert id="insertWorkerBlack"> <insert id="insertWorkerBlack">