From de0c3da8aad208f59d709719edbae4ee16424164 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 28 Feb 2025 18:56:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E5=A4=B4bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baotou/mapper/xml/ProjectGroupMapper.xml | 24 +++++----- .../service/impl/ProjectGroupServiceImpl.java | 20 ++++---- .../car/service/impl/CarInfoServiceImpl.java | 38 ++++++++-------- .../controller/WorkerInfoController.java | 15 +++++- .../worker/service/IWorkerInfoService.java | 4 +- .../impl/EnterpriseInfoServiceImpl.java | 43 ++++++++++++------ .../service/impl/WorkerInfoServiceImpl.java | 25 +++++++++- src/main/resources/excel/车辆导入模板.xlsx | Bin 14342 -> 14344 bytes 8 files changed, 112 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ProjectGroupMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ProjectGroupMapper.xml index 4d05bcbee..09d0b8a1d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ProjectGroupMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ProjectGroupMapper.xml @@ -3,18 +3,18 @@ diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectGroupServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectGroupServiceImpl.java index 4a5d1e581..79d38b3e9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectGroupServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/ProjectGroupServiceImpl.java @@ -163,16 +163,16 @@ public class ProjectGroupServiceImpl extends ServiceImpl epcContractorId.equals(String.valueOf(s)))) { - throw new OpenAlertException("编辑失败,解绑的EPC承包商已被使用!"); - } - } +// for (String constructionUnitId : StrUtil.split(constructionUnitIds, ",")) { +// if (gConstructionUnitIds.stream().noneMatch(constructionUnitId::equals)) { +// throw new OpenAlertException("编辑失败,解绑的施工单位已被装置使用!"); +// } +// } +// for (String epcContractorId : StrUtil.split(epcContractorIds, ",")) { +// if (gEpcContractorIds.stream().noneMatch(s -> epcContractorId.equals(String.valueOf(s)))) { +// throw new OpenAlertException("编辑失败,解绑的EPC承包商已被装置使用!"); +// } +// } } } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java index 9500b984d..7894ca3dd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java @@ -261,14 +261,14 @@ public class CarInfoServiceImpl extends ServiceImpl impl .last(Cts.IGNORE_DATA_SCOPE_CONDITION) ).stream().collect(Collectors.toMap(CarType::getCarTypeName, Function.identity(), (o1, o2) -> o1)); for (Map importInfo : list) { - String carModuleType = importInfo.get("车辆类型"); - CarInfo dataCar = numMap.get(importInfo.get("车牌号")); + String carModuleType = importInfo.get("*车辆类型"); + CarInfo dataCar = numMap.get(importInfo.get("*车牌号")); CarInfo excelCar = new CarInfo(); - excelCar.setCarNumber(importInfo.get("车牌号")); - excelCar.setCarColor(importInfo.get("车辆颜色")); + excelCar.setCarNumber(importInfo.get("*车牌号")); + excelCar.setCarColor(importInfo.get("*车辆颜色")); excelCar.setAddTime(new Date()); excelCar.setProjectSn(projectSn); - String readWorkerName = importInfo.get("司机姓名"); + String readWorkerName = importInfo.get("*司机姓名"); if (!"临时车辆".equals(carModuleType)) { WorkerInfo workerInfo = workerMap.get(readWorkerName); if (workerInfo == null) { @@ -280,14 +280,14 @@ public class CarInfoServiceImpl extends ServiceImpl impl excelCar.setDriverWorkerId(String.valueOf(workerInfo.getId())); } excelCar.setDriverWorkerName(readWorkerName); - excelCar.setDriverTelephone(importInfo.get("司机电话")); - excelCar.setIsBlack(Objects.equals(importInfo.get("是否黑名单"), "是") ? 1 : 0); - excelCar.setCarType(Optional.ofNullable(carTypeMap.get(importInfo.get("车种类型"))).map(CarType::getId).orElse(null)); + excelCar.setDriverTelephone(importInfo.get("*司机电话")); + excelCar.setIsBlack(Objects.equals(importInfo.get("*是否黑名单"), "是") ? 1 : 0); + excelCar.setCarType(Optional.ofNullable(carTypeMap.get(importInfo.get("*车种类型"))).map(CarType::getId).orElse(null)); excelCar.setCarModuleType("固定车辆".equals(carModuleType) ? 1 : ("长期车辆".equals(carModuleType) ? 2 : 3)); excelCar.setReserveStartTime(DateUtil.parse(importInfo.get("预约开始时间"))); excelCar.setReserveEndTime(DateUtil.parse(importInfo.get("预约结束时间"))); excelCar.setEntryAndExitPermit("单次".equals(importInfo.get("允许进出次数")) ? 0 : 1); - excelCar.setEnterpriseId(Optional.ofNullable(enterpriseInfoMap.get(importInfo.get("单位"))).map(EnterpriseInfo::getId).orElse(null)); + excelCar.setEnterpriseId(Optional.ofNullable(enterpriseInfoMap.get(importInfo.get("*单位"))).map(EnterpriseInfo::getId).orElse(null)); if (dataCar == null) { this.addCarInfo(excelCar); } else { @@ -331,32 +331,32 @@ public class CarInfoServiceImpl extends ServiceImpl impl private void checkParams(List> list, String projectSn) { for (Map importInfo : list) { - if (StringUtils.isBlank(importInfo.get("单位"))) { + if (StringUtils.isBlank(importInfo.get("*单位"))) { throw new OpenAlertException("有单位未填写"); } - if (StringUtils.isBlank(importInfo.get("车辆类型"))) { + if (StringUtils.isBlank(importInfo.get("*车辆类型"))) { throw new OpenAlertException("有车辆类型未填写"); } - if (StringUtils.isBlank(importInfo.get("车牌号"))) { + if (StringUtils.isBlank(importInfo.get("*车牌号"))) { throw new OpenAlertException("有车牌号未填写"); } - if (StringUtils.isBlank(importInfo.get("车辆颜色"))) { + if (StringUtils.isBlank(importInfo.get("*车辆颜色"))) { throw new OpenAlertException("有车辆颜色未填写"); } - if (StringUtils.isBlank(importInfo.get("车种类型"))) { + if (StringUtils.isBlank(importInfo.get("*车种类型"))) { throw new OpenAlertException("有车种类型未填写"); } - if (StringUtils.isBlank(importInfo.get("司机姓名"))) { + if (StringUtils.isBlank(importInfo.get("*司机姓名"))) { throw new OpenAlertException("有司机姓名未填写"); } - if (StringUtils.isBlank(importInfo.get("司机电话"))) { + if (StringUtils.isBlank(importInfo.get("*司机电话"))) { throw new OpenAlertException("有司机电话未填写"); } - if (StringUtils.isBlank(importInfo.get("司机电话"))) { + if (StringUtils.isBlank(importInfo.get("*司机电话"))) { throw new OpenAlertException("有司机电话未填写"); } - if (!"固定车辆".equals(importInfo.get("车辆类型")) && DateUtil.compare(DateUtil.parse(importInfo.get("预约结束时间")), new Date()) < 0) { - throw new OpenAlertException("预约时间已失效,车辆" + importInfo.get("车牌号") + "无法下发,请重新提交"); + if (!"固定车辆".equals(importInfo.get("*车辆类型")) && DateUtil.compare(DateUtil.parse(importInfo.get("预约结束时间")), new Date()) < 0) { + throw new OpenAlertException("预约时间已失效,车辆" + importInfo.get("*车牌号") + "无法下发,请重新提交"); } } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java index ab6df854f..b6f918eea 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java @@ -63,6 +63,7 @@ public class WorkerInfoController { @Lazy @Autowired MinioUtils minioUtils; + @Lazy @Autowired private IWorkerInfoService workerInfoService; @Autowired @@ -885,5 +886,17 @@ public class WorkerInfoController { return Result.success(new JoBuilder().put("file", foldName + ".zip").build()); } - + @OperLog(operModul = "劳务管理", operType = "批量移动劳务人员", operDesc = "批量移动劳务人员") + @ApiOperation(value = "批量移动劳务人员", notes = "批量移动劳务人员", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "enterpriseId", value = "所属企业", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "personType", value = "人员类型 1、劳务人员 2、管理人员", paramType = "body", required = false, dataType = "String"), + @ApiImplicitParam(name = "moveId", value = "工种id或岗位id", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "workerIdStr", value = "人员Id,多个逗号分割", paramType = "body", required = true, dataType = "String"), + }) + @PostMapping(value = "/updateWorkerOrg") + public Result updateWorkerOrg(@RequestBody Map map) { + workerInfoService.updateWorkerOrg(map); + return Result.ok(); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java index d92606567..a22856021 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java @@ -589,5 +589,7 @@ public interface IWorkerInfoService extends IService { void updateWorkerEnter(WorkerInfo workerInfo); - List> getPostWorkTypeList(Map map); + List> getPostWorkTypeList(Map map); + + void updateWorkerOrg(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java index 2e71eefc7..682fd8de7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/EnterpriseInfoServiceImpl.java @@ -21,6 +21,9 @@ import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncJiLianDa; import com.zhgd.xmgl.async.AsyncWorker; import com.zhgd.xmgl.base.CompanyVo; +import com.zhgd.xmgl.modules.baotou.security.entity.XzSecurityQualityInspectionRecord; +import com.zhgd.xmgl.modules.baotou.security.enums.XzSecurityQualityInspectionRecordStatusEnum; +import com.zhgd.xmgl.modules.baotou.security.service.IXzSecurityQualityInspectionRecordService; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.basicdata.service.impl.CompanyServiceImpl; import com.zhgd.xmgl.modules.exam.entity.ExamTrain; @@ -35,8 +38,8 @@ import com.zhgd.xmgl.modules.project.mapper.ProjectEnterpriseMapper; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.project.service.impl.ProjectEnterpriseServiceImpl; import com.zhgd.xmgl.modules.quality.entity.QualityInspectionRecord; -import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService; import com.zhgd.xmgl.modules.quality.enums.QualityInspectionRecordStatusEnum; +import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService; import com.zhgd.xmgl.modules.worker.entity.*; import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo; import com.zhgd.xmgl.modules.worker.mapper.DepartmentInfoMapper; @@ -44,12 +47,10 @@ import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.TeamInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.WorkerAttendanceMapper; import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService; +import com.zhgd.xmgl.modules.worker.service.ITeamInfoService; import com.zhgd.xmgl.modules.worker.service.IUserEnterpriseService; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; import com.zhgd.xmgl.modules.xz.emergency.service.IXzEmergencyRecordService; -import com.zhgd.xmgl.modules.baotou.security.entity.XzSecurityQualityInspectionRecord; -import com.zhgd.xmgl.modules.baotou.security.enums.XzSecurityQualityInspectionRecordStatusEnum; -import com.zhgd.xmgl.modules.baotou.security.service.IXzSecurityQualityInspectionRecordService; import com.zhgd.xmgl.modules.xz.service.impl.XzSupplierQualificationApplyServiceImpl; import com.zhgd.xmgl.modules.xz.special.entity.*; import com.zhgd.xmgl.modules.xz.special.service.*; @@ -77,6 +78,9 @@ import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) public class EnterpriseInfoServiceImpl extends ServiceImpl implements IEnterpriseInfoService { + @Lazy + @Autowired + ITeamInfoService teamInfoService; @Autowired IUserEnterpriseService userEnterpriseService; @Autowired @@ -273,21 +277,21 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl map) { - QueryWrapper wrapper = new QueryWrapper<>(); String enterpriseId = MapUtils.getString(map, "enterpriseId"); String projectSn = MapUtils.getString(map, "projectSn"); - wrapper.lambda().eq(TeamInfo::getEnterpriseId, enterpriseId) - .eq(TeamInfo::getProjectSn, projectSn); - int count = teamInfoMapper.selectCount(wrapper); - if (count > 0) { - throw new OpenAlertException(MessageUtil.get("notDeleteEnterpriseErr")); - } +// QueryWrapper wrapper = new QueryWrapper<>(); +// wrapper.lambda().eq(TeamInfo::getEnterpriseId, enterpriseId) +// .eq(TeamInfo::getProjectSn, projectSn); +// int count = teamInfoMapper.selectCount(wrapper); +// if (count > 0) { +// throw new OpenAlertException(MessageUtil.get("notDeleteEnterpriseErr")); +// } Integer dCount = departmentInfoMapper.selectCount(new LambdaQueryWrapper() .eq(DepartmentInfo::getEnterpriseId, enterpriseId) .eq(DepartmentInfo::getProjectSn, projectSn) ); if (dCount > 0) { - throw new OpenAlertException("企业下存在部门,不允许删除"); + throw new OpenAlertException("企业下存在岗位,不允许删除"); } Integer parentEnterpriseNum = projectEnterpriseMapper.selectCount(new QueryWrapper().lambda() .eq(ProjectEnterprise::getParentEnterpriseId, enterpriseId) @@ -295,7 +299,20 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl() + .eq(WorkerInfo::getProjectSn, projectSn) + .eq(WorkerInfo::getEnterpriseId, enterpriseId) + ); + if (workerCount != 0) { + throw new OpenAlertException("企业下存在人员,不允许删除"); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(TeamInfo::getEnterpriseId, enterpriseId) + .eq(TeamInfo::getProjectSn, projectSn); + List teamInfos = teamInfoMapper.selectList(wrapper); + for (TeamInfo teamInfo : teamInfos) { + teamInfoService.removeTeamInfo(String.valueOf(teamInfo.getId())); + } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(ProjectEnterprise::getEnterpriseId, enterpriseId) .eq(ProjectEnterprise::getProjectSn, projectSn); diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 246f80047..0e7bd7d56 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -609,7 +609,7 @@ public class WorkerInfoServiceImpl extends ServiceImpl map) { + Integer personType = MapUtils.getInteger(map, "personType"); + String workerIdStr = MapUtils.getString(map, "workerIdStr"); + if (StringUtils.isNotEmpty(workerIdStr)) { + for (String id : workerIdStr.split(Cts.COMMA)) { + if (personType == 1) { + WorkerInfo info = JSON.parseObject(JSON.toJSONString(workerInfoMapper.selectById(Long.valueOf(id))), WorkerInfo.class); + info.setPersonType(personType); + info.setWorkerTypeId(MapUtils.getLong(map, "moveId")); + info.setEnterpriseId(MapUtils.getLong(map, "enterpriseId")); + this.editWorkerInfo(info); + } else { + WorkerInfo info = workerInfoMapper.selectById(Long.valueOf(id)); + info.setPersonType(personType); + info.setDepartmentId(MapUtils.getLong(map, "moveId")); + info.setEnterpriseId(MapUtils.getLong(map, "enterpriseId")); + this.editWorkerInfo(info); + } + } + } + } + /** * 获取是否合格 * diff --git a/src/main/resources/excel/车辆导入模板.xlsx b/src/main/resources/excel/车辆导入模板.xlsx index 7a722f839aef775b11db256f922107860dbf1aea..49d09da87a2af1c29f22ee1d5a74c910923accb5 100644 GIT binary patch delta 2332 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 delta 2382 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