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 fae5a89ff..88a46d77c 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 @@ -6,18 +6,25 @@ import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.redis.annotation.ApiIdempotent; +import com.zhgd.xmgl.modules.bigdevice.entity.vo.AlarmsDistinguishedNumberByAlarmType; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.vo.*; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; import com.zhgd.xmgl.util.MessageUtil; -import io.swagger.annotations.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; /** @@ -342,6 +349,12 @@ public class WorkerInfoController { return Result.success(workerInfoService.selectProjectWorkerTypeTotalList(map)); } + @ApiOperation(value = "统计按工种分布的人员数量", notes = "统计按工种分布的人员数量") + @GetMapping("/countWorkerNumGroupByWorkerType") + public Result> countWorkerNumGroupByWorkerType(@RequestParam Map map) { + return Result.success(workerInfoService.countWorkerNumGroupByWorkerType(map)); + } + @ApiOperation(value = "查询项目下所有企业出勤人数列表", notes = "查询项目下所有企业出勤人数列表") @ApiImplicitParams({ @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "query", required = true, dataType = "String"), @@ -460,13 +473,14 @@ public class WorkerInfoController { @ApiOperation(value = "人员管理-通过项目sn,以及时间区间查询员工申报年龄段", notes = "人员管理-通过项目id,以及时间区间查询员工申报年龄段") @ApiImplicitParams({ - @ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"), + @ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = false, dataType = "String"), + @ApiImplicitParam(name = "projectSns", value = "项目SNS", paramType = "query", required = false, dataType = "String"), @ApiImplicitParam(name = "startDate", value = "开始时间,yyyy-MM-dd", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "endDate", value = "结束时间,yyyy-MM-dd", paramType = "query", dataType = "String") }) @GetMapping(value = "/getDeclareAge") - public Result getDeclareAge(String projectSn, String startDate, String endDate) { - return Result.success(workerInfoService.getDeclareAge(projectSn, startDate, endDate)); + public Result getDeclareAge(String projectSn, String startDate, String endDate, String projectSns) { + return Result.success(workerInfoService.getDeclareAge(projectSn, startDate, endDate, projectSns)); } @@ -562,7 +576,17 @@ public class WorkerInfoController { @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), }) - public Result> getWorkerInfoDetails(Integer pageNo, Integer pageSize,String projectSn) { - return workerInfoService.getWorkerInfoDetails(pageNo, pageSize,projectSn); + public Result> getWorkerInfoDetails(Integer pageNo, Integer pageSize, String projectSn) { + return workerInfoService.getWorkerInfoDetails(pageNo, pageSize, projectSn); + } + + /** + * 查询工程人员在场与总人数统计 + * + * @return + */ + @GetMapping("/queryThePresenceAndTotalNumberOfEngineeringPersonnel") + public Result queryThePresenceAndTotalNumberOfEngineeringPersonnel() { + return Result.success(workerInfoService.queryThePresenceAndTotalNumberOfEngineeringPersonnel()); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/PresenceAndTotalNumberOfEngineeringPersonnelVo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/PresenceAndTotalNumberOfEngineeringPersonnelVo.java new file mode 100644 index 000000000..06c90a293 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/PresenceAndTotalNumberOfEngineeringPersonnelVo.java @@ -0,0 +1,20 @@ +package com.zhgd.xmgl.modules.worker.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class PresenceAndTotalNumberOfEngineeringPersonnelVo { + private Integer presentNum; + private Integer peopleNum; + private List countList; + + @Data + public static class Count { + private String projectName; + private Integer presentNum; + private Integer peopleNum; + } +} + diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/TypeNumVo.java b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/TypeNumVo.java new file mode 100644 index 000000000..8f30b886f --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/worker/entity/vo/TypeNumVo.java @@ -0,0 +1,9 @@ +package com.zhgd.xmgl.modules.worker.entity.vo; + +import lombok.Data; + +@Data +public class TypeNumVo { + private String typeName; + private Integer num; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java index f9d78fe80..3813251cc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/WorkerInfoMapper.java @@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; -import com.zhgd.xmgl.modules.worker.entity.vo.AllProjectTeamVo; -import com.zhgd.xmgl.modules.worker.entity.vo.PersonnelSituationVO; -import com.zhgd.xmgl.modules.worker.entity.vo.ProjectWorkerTypeTotalVo; -import com.zhgd.xmgl.modules.worker.entity.vo.WorkerInfoDetailsVo; +import com.zhgd.xmgl.modules.worker.entity.vo.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -224,4 +221,10 @@ public interface WorkerInfoMapper extends BaseMapper { Long selectSceneTotal(String project); IPage getWorkerInfoDetails(Page p, String projectSn); + + List queryPresentNum(); + + List queryTotalNum(); + + List countWorkerNumGroupByWorkerType(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml index f13b8209a..bad4328f4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/worker/mapper/xml/WorkerInfoMapper.xml @@ -2196,6 +2196,7 @@ and birthday #{endDate} + and birthday is not null and birthday != '' @@ -2263,4 +2264,30 @@ + + + + + + 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 9a4053322..a81905caf 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 @@ -109,7 +109,11 @@ public interface IWorkerInfoService extends IService { PersonnelSituationVO getPersonnelSituation(String projectSn); - DeclareAgeVO getDeclareAge(String projectSn, String startDate, String endDate); + DeclareAgeVO getDeclareAge(String projectSn, String startDate, String endDate, String projectSns); Result> getWorkerInfoDetails(Integer pageNo, Integer pageSize, String projectSn); + + PresenceAndTotalNumberOfEngineeringPersonnelVo queryThePresenceAndTotalNumberOfEngineeringPersonnel(); + + List countWorkerNumGroupByWorkerType(Map map); } 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 af9bd3732..27df395d0 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 @@ -36,6 +36,7 @@ import com.zhgd.xmgl.util.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -1621,7 +1622,35 @@ public class WorkerInfoServiceImpl extends ServiceImpl snList = new ArrayList<>(); + if (StringUtils.isNotBlank(projectSns)) { + String[] snArr = StringUtils.split(projectSns, ","); + Collections.addAll(snList, snArr); + } else { + //查询全部 + List allProjects = projectMapper.selectList(null); + snList = allProjects.stream().map(Project::getProjectSn).collect(Collectors.toList()); + } + + for (String projectSn1 : snList) { + DeclareAgeVO v1 = getDeclareAgeVO(projectSn1, startDate, endDate); + declareAgeVO.setEighteenToTwentyFour(declareAgeVO.getEighteenToTwentyFour() + v1.getEighteenToTwentyFour()); + declareAgeVO.setTwentyFiveToThirtyFour(declareAgeVO.getTwentyFiveToThirtyFour() + v1.getTwentyFiveToThirtyFour()); + declareAgeVO.setThirtyFiveToFortyNine(declareAgeVO.getThirtyFiveToFortyNine() + v1.getThirtyFiveToFortyNine()); + declareAgeVO.setFiftyToFiftyFive(declareAgeVO.getFiftyToFiftyFive() + v1.getFiftyToFiftyFive()); + declareAgeVO.setNotRegistered(declareAgeVO.getNotRegistered() + v1.getNotRegistered()); + } + return declareAgeVO; + } else { + return getDeclareAgeVO(projectSn, startDate, endDate); + } + } + + @NotNull + private DeclareAgeVO getDeclareAgeVO(String projectSn, String startDate, String endDate) { List ageList = workerInfoMapper.getDeclareAge(projectSn, startDate, endDate); Set>> ageSet = ageList.stream().collect(Collectors.groupingBy(DateUtil::ageOfNow)).entrySet(); DeclareAgeVO result = new DeclareAgeVO(); @@ -1657,6 +1686,58 @@ public class WorkerInfoServiceImpl extends ServiceImpl presentCountList = workerInfoMapper.queryPresentNum(); + List totalCountList = workerInfoMapper.queryTotalNum(); + presentCountList.addAll(totalCountList); + HashMap map = new HashMap<>(); + for (PresenceAndTotalNumberOfEngineeringPersonnelVo.Count count : presentCountList) { + String projectName = count.getProjectName(); + PresenceAndTotalNumberOfEngineeringPersonnelVo.Count c = map.get(projectName); + if (c == null) { + map.put(projectName, count); + } else { + Integer prn = count.getPresentNum(); + Integer pen = count.getPeopleNum(); + c.setPresentNum(NumberUtil.add(prn, c.getPresentNum()).intValue()); + c.setPeopleNum(NumberUtil.add(pen, c.getPeopleNum()).intValue()); + } + } + PresenceAndTotalNumberOfEngineeringPersonnelVo rtVo = new PresenceAndTotalNumberOfEngineeringPersonnelVo(); + ArrayList list = new ArrayList<>(map.values()); + int presentNum = list.stream().mapToInt(PresenceAndTotalNumberOfEngineeringPersonnelVo.Count::getPresentNum).sum(); + int peopleNum = list.stream().mapToInt(PresenceAndTotalNumberOfEngineeringPersonnelVo.Count::getPeopleNum).sum(); + rtVo.setCountList(list); + rtVo.setPresentNum(presentNum); + rtVo.setPeopleNum(peopleNum); + return rtVo; + } + + @Override + public List countWorkerNumGroupByWorkerType(Map map) { + List voList = workerInfoMapper.countWorkerNumGroupByWorkerType(map); + voList.sort((o1, o2) -> o2.getNum().compareTo(o1.getNum())); + List rtList = new ArrayList<>(); + //其他的数量 + int showNum = 10; + TypeNumVo other = new TypeNumVo(); + other.setTypeName("其他"); + other.setNum(0); + for (int i = 0; i < voList.size(); i++) { + TypeNumVo vo = voList.get(i); + if (i >= showNum) { + //其他数量 + Integer num = vo.getNum(); + other.setNum(num + other.getNum()); + } else { + rtList.add(vo); + } + } + rtList.add(other); + return rtList; + } + private long getAttendanceNumber(String projectSn) { AtomicLong number = new AtomicLong(0); // 人员分组 diff --git a/src/main/resources/application-cr.properties b/src/main/resources/application-cr.properties index 753cf47ca..05f333c30 100644 --- a/src/main/resources/application-cr.properties +++ b/src/main/resources/application-cr.properties @@ -11,8 +11,8 @@ spring.datasource.username=ENC(lRspM3gSyiQcjQf1yMyOjg==) spring.datasource.password=ENC(QGayqFar3bfVMSThuRKFTjcaktJmSdjE) server.port=12333 #server.port=30246 -basePath=/home/zhgd/app/service/itbgpImage/ -server.tomcat.basedir=/home/zhgd/app/service/tempImage/ +basePath=/mnt/sdc/zhgd/itbgpImage/ +server.tomcat.basedir=/mnt/sdc/zhgd/tempImage/ arcsoft.dllPath=/home/zhgd/app/service/dll security.enable=false isGetStandardData=false @@ -46,7 +46,7 @@ spring.file-storage.local[0].enable-access=false # \u8BBF\u95EE\u57DF\u540D\uFF0C\u4F8B\u5982\uFF1A\u201Chttp://127.0.0.1:6023/image/\u201D\uFF0C\u6CE8\u610F\u540E\u9762\u8981\u548C path-patterns \u4FDD\u6301\u4E00\u81F4\uFF0C\u201C/\u201D\u7ED3\u5C3E\uFF0C\u672C\u5730\u5B58\u50A8\u5EFA\u8BAE\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u65B9\u4FBF\u540E\u671F\u66F4\u6362\u57DF\u540D spring.file-storage.local[0].domain= # \u5B58\u50A8\u5730\u5740 -spring.file-storage.local[0].base-path=/home/zhgd/app/service/itbgpImage/ +spring.file-storage.local[0].base-path=/mnt/sdc/zhgd/itbgpImage/ # \u8BBF\u95EE\u8DEF\u5F84\uFF0C\u5F00\u542F enable-access \u540E\uFF0C\u901A\u8FC7\u6B64\u8DEF\u5F84\u53EF\u4EE5\u8BBF\u95EE\u5230\u4E0A\u4F20\u7684\u6587\u4EF6 spring.file-storage.local[0].path-patterns= spring.file-storage.aliyun-oss[0].platform=aliyun-oss