From f9e2dd0ce7edfb918e6f462a8dc7b3aecdca6663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E4=BA=AE?= Date: Fri, 22 Aug 2025 16:25:42 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=A6=96=E9=A1=B5=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/arcsoft-sdk-face-3.0.0.0.jar | Bin 0 -> 62469 bytes bonus-common/bonus-common-core/pom.xml | 28 ++--- .../common/core/utils/face/ArcFaceHelper.java | 3 +- .../bmw/controller/PmWorkerController.java | 13 ++- .../controller/PmWorkerExitController.java | 5 +- .../bonus/bmw/domain/vo/HomePageProVo.java | 4 + .../bonus/bmw/domain/vo/HomePageWorkerVo.java | 5 + .../com/bonus/bmw/domain/vo/MapBeanVo.java | 9 ++ .../bmw/mapper/BmWorkerContractMapper.java | 7 ++ .../com/bonus/bmw/mapper/HomePageMapper.java | 16 ++- .../bonus/bmw/mapper/PmWorkerExitMapper.java | 3 + .../bmw/service/PmWorkerExitService.java | 4 +- .../impl/BmWorkerContractServiceImpl.java | 6 + .../bmw/service/impl/HomePageServiceImpl.java | 17 ++- .../service/impl/PmWorkerExitServiceImpl.java | 103 ++++++++++-------- .../mapper/bmw/BmWorkerContractMapper.xml | 13 +++ .../resources/mapper/bmw/HomePageMapper.xml | 48 +++++++- .../mapper/bmw/HomePageSubMapper.xml | 1 + .../mapper/bmw/PmWorkerExitMapper.xml | 14 +++ 19 files changed, 228 insertions(+), 71 deletions(-) create mode 100644 bonus-common/bonus-common-core/lib/arcsoft-sdk-face-3.0.0.0.jar diff --git a/bonus-common/bonus-common-core/lib/arcsoft-sdk-face-3.0.0.0.jar b/bonus-common/bonus-common-core/lib/arcsoft-sdk-face-3.0.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..89927f11175398946103a756c80a0d4229a23149 GIT binary patch literal 62469 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 literal 0 HcmV?d00001 diff --git a/bonus-common/bonus-common-core/pom.xml b/bonus-common/bonus-common-core/pom.xml index 868d4e1..77ba085 100644 --- a/bonus-common/bonus-common-core/pom.xml +++ b/bonus-common/bonus-common-core/pom.xml @@ -17,21 +17,21 @@ - - arcsoft - arcsoft - 3.0 - system - ${project.basedir}/lib/arcsoft-sdk-face-3.0.0.0-linux.jar - + + + + + + + - - - - - - - + + arcsoft + arcsoft + 3.0 + system + ${project.basedir}/lib/arcsoft-sdk-face-3.0.0.0.jar + diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/face/ArcFaceHelper.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/face/ArcFaceHelper.java index 3547435..b885399 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/face/ArcFaceHelper.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/face/ArcFaceHelper.java @@ -84,9 +84,8 @@ public class ArcFaceHelper { faceEngine.detectFaces(imageInfo.getRgbData(), imageInfo.getWidth(), imageInfo.getHeight(), ImageFormat.CP_PAF_BGR24, lstFaceInfo); System.out.println("检测到人脸数:" + lstFaceInfo.size()); - if (lstFaceInfo.size() == 0) { + if (lstFaceInfo.isEmpty()) { return null; -// throw new NullPointerException("未检测到人脸"); } FaceResult result = new FaceResult(); //提取人脸特征 diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java index e1c3550..d7c530b 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java @@ -166,14 +166,23 @@ public class PmWorkerController extends BaseController { suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); } // 创建临时文件 - tempFile = Files.createTempFile("temp-image-", suffix).toFile(); +// tempFile = Files.createTempFile("temp-image-", suffix).toFile(); + File customTempDir = new File("D:\\temp"); + if (!customTempDir.exists()) { + customTempDir.mkdirs(); + } + tempFile = File.createTempFile("temp-image-", suffix, customTempDir); tempFile.deleteOnExit(); // JVM退出时自动删除 // 将 MultipartFile 写入临时文件 file.transferTo(tempFile); ArcFaceHelper arcFaceHelper = new ArcFaceHelper(); // 调用原方法,传入临时文件的路径 FaceResult faceFeatures = arcFaceHelper.getFaceFeatures(tempFile.getAbsolutePath()); - return AjaxResult.success(faceFeatures); + if (faceFeatures == null){ + return AjaxResult.error("人脸检测失败"); + }else{ + return AjaxResult.success(faceFeatures); + } } catch (IOException e) { // 处理异常(如磁盘满、权限不足等) e.printStackTrace(); diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerExitController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerExitController.java index c2c16d7..dc5e1b4 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerExitController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerExitController.java @@ -75,8 +75,7 @@ public class PmWorkerExitController extends BaseController { if(o.getProId()==null){ return AjaxResult.error("请填写出厂工程"); } - - return toAjax(service.updateWorkerExit(o,listFile)); + return service.updateWorkerExit(o,listFile); } catch (Exception e) { logger.error(e.toString(), e); } @@ -88,7 +87,7 @@ public class PmWorkerExitController extends BaseController { @SysLog(title = "批量人员出场", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->人员出场管理", details = "批量人员出场") public AjaxResult batchExit(@RequestBody List list) { try { - return toAjax(service.updateWorkerBatchExit(list)); + return service.updateWorkerBatchExit(list); } catch (Exception e) { logger.error(e.toString(), e); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageProVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageProVo.java index 14c436a..74db771 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageProVo.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageProVo.java @@ -92,4 +92,8 @@ public class HomePageProVo { */ private Integer network; + private List proByVolLevel; + + private List proByProStatus; + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageWorkerVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageWorkerVo.java index 453ff34..22225e4 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageWorkerVo.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageWorkerVo.java @@ -63,4 +63,9 @@ public class HomePageWorkerVo { */ List postMsg; + /** + * 岗位信息 + */ + List ageMsg; + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/MapBeanVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/MapBeanVo.java index 37bf98d..f0b6ed8 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/MapBeanVo.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/MapBeanVo.java @@ -1,8 +1,12 @@ package com.bonus.bmw.domain.vo; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@AllArgsConstructor +@NoArgsConstructor public class MapBeanVo { private String key; @@ -13,4 +17,9 @@ public class MapBeanVo { private String name; + public MapBeanVo(String key, String value){ + this.value = value; + this.key = key; + } + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerContractMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerContractMapper.java index 41ff4b6..55d1eda 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerContractMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerContractMapper.java @@ -58,4 +58,11 @@ public interface BmWorkerContractMapper { * @return */ List selectContractListById(BmWorkerContract o); + + /** + * 更新 Ein 临时记录的关联合同ID + * @param id + * @param workerId + */ + void updateEinDayRecordContractId(@Param("oldContractId") Integer id,@Param("workerId") Integer workerId,@Param("contractId") Integer contractId); } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/HomePageMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/HomePageMapper.java index 9fb3386..b21f044 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/HomePageMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/HomePageMapper.java @@ -77,5 +77,19 @@ public interface HomePageMapper { * @param o * @return */ - List setWorkerPostTop(HomePagePo o); + List getWorkerPostTop(HomePagePo o); + + /** + * 获取工程数量 按电压等级区分 + * @param o + * @return + */ + List getProByVolLevel(HomePagePo o); + + /** + * 获取工程数量 按工程状态区分 + * @param o + * @return + */ + List getProByProStatus(HomePagePo o); } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java index bd03588..f13c1d8 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerExitMapper.java @@ -1,6 +1,7 @@ package com.bonus.bmw.mapper; import com.bonus.bmw.domain.dto.PmWorkerDto; +import com.bonus.bmw.domain.vo.MapBeanVo; import com.bonus.bmw.domain.vo.PmWorker; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -35,4 +36,6 @@ public interface PmWorkerExitMapper { int updateEinProRecordStatus(@Param("id") Integer id,@Param("einStatus") Integer einStatus,@Param("isUploadFile") Integer isUploadFile,@Param("exitWay") String exitWay); List selectWorkListByWorkerId(PmWorkerDto o); + + List getContractIdAndWageCard(Integer workerId); } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerExitService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerExitService.java index dc76341..1a0de1b 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerExitService.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerExitService.java @@ -24,7 +24,7 @@ public interface PmWorkerExitService { * @param listFile * @return */ - int updateWorkerExit(PmWorkerDto record, List listFile) throws Exception; + AjaxResult updateWorkerExit(PmWorkerDto record, List listFile) throws Exception; /** * 批量人员出场 @@ -32,7 +32,7 @@ public interface PmWorkerExitService { * @param list * @return */ - int updateWorkerBatchExit(List list) throws Exception; + AjaxResult updateWorkerBatchExit(List list) throws Exception; /** * 根据人员id查询人员列表 diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java index 1603074..7d29d49 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java @@ -65,7 +65,13 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{ BigDecimal dayRate = wageCriterion.setScale(2, RoundingMode.HALF_UP); record.setDayRate(dayRate.doubleValue()); } + Integer oldContractId = null; + if(record.getId() != null){ + oldContractId = record.getId(); + } int insert = mapper.insert(record); + //属于废弃上一个合同重新签一个,需要修改掉之前考情绑定 + mapper.updateEinDayRecordContractId(oldContractId,record.getWorkerId(), record.getId()); if(insert > 0){ //组装数据 MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageServiceImpl.java index 23f18b9..8450995 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.List; @Service @@ -93,6 +94,12 @@ public class HomePageServiceImpl implements HomePageService { public AjaxResult getProjectMsg(HomePagePo o) { //工程信息 HomePageProVo proMsg = mapper.getProjectMsg(o); + //按电压等级区分 + List proMsgByVolLevel = mapper.getProByVolLevel(o); + //按工程类型区分 + List postMsgByProStatus = mapper.getProByProStatus(o); + proMsg.setProByVolLevel(proMsgByVolLevel); + proMsg.setProByProStatus(postMsgByProStatus); return AjaxResult.success(proMsg); } @@ -101,8 +108,16 @@ public class HomePageServiceImpl implements HomePageService { //在场人员 HomePageWorkerVo workerMsg = mapper.getEinWorkerDistribution(o); //工种查出前五和其它 - List postMsg = mapper.setWorkerPostTop(o); + List postMsg = mapper.getWorkerPostTop(o); workerMsg.setPostMsg(postMsg); + //年龄分布 + List ageMsg = new ArrayList<>(); + ageMsg.add(new MapBeanVo("<20",workerMsg.getNum20().toString())); + ageMsg.add(new MapBeanVo("20-30",workerMsg.getNum30().toString())); + ageMsg.add(new MapBeanVo("30-40",workerMsg.getNum40().toString())); + ageMsg.add(new MapBeanVo("40-50",workerMsg.getNum50().toString())); + ageMsg.add(new MapBeanVo("50-60",workerMsg.getNum60().toString())); + workerMsg.setAgeMsg(ageMsg); return AjaxResult.success(workerMsg); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java index db1184b..a3147bf 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerExitServiceImpl.java @@ -2,6 +2,7 @@ package com.bonus.bmw.service.impl; import com.bonus.bmw.domain.dto.PmWorkerDto; import com.bonus.bmw.domain.dto.WebFileDto; +import com.bonus.bmw.domain.vo.MapBeanVo; import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.bmw.mapper.PmWorkerExitMapper; import com.bonus.bmw.service.BmWorkerContractService; @@ -49,57 +50,73 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { } @Override - public int updateWorkerExit(PmWorkerDto record, List listFile) throws Exception { - //删除合同 - int m = contractService.deleteByWorkerId(record.getWorkerId()); - //删除实时在场 - int n = mapper.deleteEinMsgByWorkerId(record.getWorkerId()); - //修改在场记录表状态 - int einStatus = 2; - //是否上传文件 - int isUploadFile = 0; - if(!listFile.isEmpty()){ - //组装数据 - MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; - String[] type = new String[listFile.size()]; - for (int i = 0; i < listFile.size(); i++) { - workerFiles[i] = listFile.get(i).getFile(); - type[i] = listFile.get(i).getType(); - } - List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER_EXIT, record.getId().toString(), type,"", ""); - isUploadFile = 1; - } + public AjaxResult updateWorkerExit(PmWorkerDto record, List listFile) throws Exception { - int k = mapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay()); - if(k==1){ - urkSendService.delUserByDevice(record.getWorkerId(),record.getProId()); - } - return k; - } - - @Override - public int updateWorkerBatchExit(List list) throws Exception { - int count = 0; - List userId = new ArrayList<>(); - List proId = new ArrayList<>(); - for (PmWorkerDto bean : list) { + //查询合同工资卡是否齐全 + List list = mapper.getContractIdAndWageCard(record.getWorkerId()); + if("1".equals(list.get(0).getValue()) && "1".equals(list.get(1).getValue())){ //删除合同 - int i = contractService.deleteByWorkerId(bean.getWorkerId()); + int m = contractService.deleteByWorkerId(record.getWorkerId()); //删除实时在场 - int j = mapper.deleteEinMsgByWorkerId(bean.getWorkerId()); + int n = mapper.deleteEinMsgByWorkerId(record.getWorkerId()); + //修改在场记录表状态 int einStatus = 2; //是否上传文件 int isUploadFile = 0; - int k = mapper.updateEinProRecordStatus(bean.getId(),einStatus,isUploadFile,bean.getExitWay()); - if(k==1){ - userId.add(bean.getWorkerId()); - proId.add(bean.getProId()); + if(!listFile.isEmpty()){ + //组装数据 + MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; + String[] type = new String[listFile.size()]; + for (int i = 0; i < listFile.size(); i++) { + workerFiles[i] = listFile.get(i).getFile(); + type[i] = listFile.get(i).getType(); + } + List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER_EXIT, record.getId().toString(), type,"", ""); + isUploadFile = 1; } - count += k; + + int k = mapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile,record.getExitWay()); + if(k==1){ + urkSendService.delUserByDevice(record.getWorkerId(),record.getProId()); + } + return k == 1 ? AjaxResult.success() :AjaxResult.error("离场失败"); + }else { + return AjaxResult.error("合同工资卡不全,请去补充后再离场"); } - //批量操作考勤机 - urkSendService.delUserByDeviceList(userId,proId); - return count==list.size()?1:0; + } + + @Override + public AjaxResult updateWorkerBatchExit(List list) throws Exception { + int count = 0; + int failCount = 0; + List userId = new ArrayList<>(); + List proId = new ArrayList<>(); + for (PmWorkerDto bean : list) { + //查询合同工资卡是否齐全 + List listData = mapper.getContractIdAndWageCard(bean.getWorkerId()); + if("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue())) { + //删除合同 + int i = contractService.deleteByWorkerId(bean.getWorkerId()); + //删除实时在场 + int j = mapper.deleteEinMsgByWorkerId(bean.getWorkerId()); + int einStatus = 2; + //是否上传文件 + int isUploadFile = 0; + int k = mapper.updateEinProRecordStatus(bean.getId(), einStatus, isUploadFile, bean.getExitWay()); + if (k == 1) { + userId.add(bean.getWorkerId()); + proId.add(bean.getProId()); + } + count += k; + }else { + failCount++; + } + } + if(count>0){ + //批量操作考勤机 + urkSendService.delUserByDeviceList(userId,proId); + } + return AjaxResult.success("成功" + count + "条数据,失败" + failCount + "条数据,失败原因:没有补全合同工资卡"); } /** diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerContractMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerContractMapper.xml index 950b6f6..792d38b 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerContractMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerContractMapper.xml @@ -176,4 +176,17 @@ order by bwc.id desc + + + update bm_worker_ein_day_record set contract_id = #{contractId} + where worker_id = #{workerId} + + + AND contract_id = #{oldContractId} + + + AND contract_id is null + + + \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageMapper.xml index d0d00b1..8bd99bb 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageMapper.xml @@ -167,7 +167,7 @@ - SELECT post_name as `key`, worker_count as `value` @@ -175,11 +175,14 @@ (SELECT ppt.post_name, COUNT(pw.id) AS worker_count - FROM bm_worker_ein_msg bwem INNER JOIN pm_worker pw ON bwem.worker_id = pw.id AND pw.is_active = 1 LEFT JOIN pm_post_type ppt ON bwem.post_id = ppt.id + LEFT JOIN pm_project pp ON bwem.pro_id = pp.id AND pp.is_active = 1 WHERE bwem.is_active = 1 + + AND pp.sub_com_id = #{subComId} + GROUP BY ppt.id ORDER BY worker_count DESC LIMIT 5) @@ -189,11 +192,14 @@ SELECT '其他' AS post_name, COUNT(pw.id) AS worker_count - FROM bm_worker_ein_msg bwem INNER JOIN pm_worker pw ON bwem.worker_id = pw.id AND pw.is_active = 1 LEFT JOIN pm_post_type ppt ON bwem.post_id = ppt.id + LEFT JOIN pm_project pp ON bwem.pro_id = pp.id AND pp.is_active = 1 WHERE bwem.is_active = '1' + + AND pp.sub_com_id = #{subComId} + AND ppt.id NOT IN ( SELECT id FROM ( SELECT ppt.id @@ -208,4 +214,40 @@ ) ) AS combined + + + + \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml index 28e8dbb..379f2f3 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml @@ -52,6 +52,7 @@ AND locate(#{mainProName},pmp.main_pro_name) + group by pmp.id + + \ No newline at end of file