From 8cdd4de7f4de4627fad48fbabdda6002520d76e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E4=BA=AE?= Date: Fri, 15 Aug 2025 09:48:19 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BmWorkerBlackController.java | 24 ++- .../BmWorkerWageCardController.java | 18 ++ .../bmw/controller/PmWorkerController.java | 18 ++ .../controller/PmWorkerExitController.java | 29 +++ .../bonus/bmw/domain/vo/BmWorkerBlack.java | 15 ++ .../bonus/bmw/domain/vo/BmWorkerWageCard.java | 12 ++ .../com/bonus/bmw/domain/vo/PmWorker.java | 24 +++ .../bmw/domain/vo/PmWorkerExitExport.java | 181 ++++++++++++++++++ .../bonus/bmw/mapper/PmWorkerExitMapper.java | 2 +- .../service/impl/PmWorkerExitServiceImpl.java | 12 +- .../mapper/bmw/PmWorkerExitMapper.xml | 14 +- 11 files changed, 340 insertions(+), 9 deletions(-) create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerExitExport.java diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerBlackController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerBlackController.java index 7989eec..3962bbc 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerBlackController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerBlackController.java @@ -1,10 +1,8 @@ package com.bonus.bmw.controller; -import com.bonus.bmw.domain.vo.BmWorkerBlack; -import com.bonus.bmw.domain.vo.BmWorkerContract; -import com.bonus.bmw.domain.vo.BmWorkerLight; -import com.bonus.bmw.domain.vo.PmWorker; +import com.bonus.bmw.domain.vo.*; import com.bonus.bmw.service.BmWorkerBlackService; import com.bonus.bmw.service.impl.BmWorkerBlackServiceImpl; +import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; @@ -17,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; @@ -90,4 +89,21 @@ public class BmWorkerBlackController extends BaseController { } + /** + * 失信人员导出 + */ + // @RequiresPermissions("system:user:export") + @PostMapping("/workerBlackExport") + @SysLog(title = "失信人员导出", businessType = OperaType.EXPORT, logType = 0, module = "施工人员->红绿灯管理->失信人员管理", details = "失信人员导出") + public void export(HttpServletResponse response, BmWorkerBlack o) { + try { + List list = service.getWorkerBlackList(o); + ExcelUtil util = new ExcelUtil<>(BmWorkerBlack.class); + util.exportExcel(response, list, "失信人员导出"); + } catch (Exception e) { + logger.error(e.toString(), e); + } + } + + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java index 251ec60..36c29de 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java @@ -6,6 +6,7 @@ import com.bonus.bmw.domain.vo.BmWorkerContract; import com.bonus.bmw.domain.vo.BmWorkerWageCard; import com.bonus.bmw.service.BmWorkerWageCardService; import com.bonus.common.core.utils.json.FastJsonHelper; +import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; @@ -17,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; @@ -121,5 +123,21 @@ public class BmWorkerWageCardController extends BaseController { } } + /** + * 工资卡导出 + */ + // @RequiresPermissions("system:user:export") + @PostMapping("/wageCardExport") + @SysLog(title = "工资卡导出", businessType = OperaType.EXPORT, logType = 0, module = "施工人员->红绿灯管理->合同管理", details = "工资卡导出") + public void export(HttpServletResponse response, BmWorkerWageCard o) { + try { + List list = service.selectWageCardList(o); + ExcelUtil util = new ExcelUtil<>(BmWorkerWageCard.class); + util.exportExcel(response, list, "工资卡导出"); + } catch (Exception e) { + logger.error(e.toString(), e); + } + } + } 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 b487047..20e13e9 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 @@ -10,6 +10,7 @@ import com.bonus.bmw.service.impl.PmWorkerServiceImpl; import com.bonus.common.core.utils.face.ArcFaceHelper; import com.bonus.common.core.utils.face.FaceResult; import com.bonus.common.core.utils.json.FastJsonHelper; +import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; @@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -174,5 +176,21 @@ public class PmWorkerController extends BaseController { } } + /** + * 人员信息导出 + */ + // @RequiresPermissions("system:user:export") + @PostMapping("/workerEinExport") + @SysLog(title = "人员信息导出", businessType = OperaType.EXPORT, logType = 0, module = "施工人员->红绿灯管理->入场管理", details = "人员信息导出") + public void export(HttpServletResponse response, PmWorkerDto o) { + try { + List list = service.selectWorkList(o); + ExcelUtil util = new ExcelUtil<>(PmWorker.class); + util.exportExcel(response, list, "人员入场信息导出"); + } catch (Exception e) { + logger.error(e.toString(), e); + } + } + } 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 abf72f5..9b2e10e 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 @@ -4,9 +4,11 @@ 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.domain.vo.PmWorker; +import com.bonus.bmw.domain.vo.PmWorkerExitExport; import com.bonus.bmw.service.PmWorkerExitService; import com.bonus.bmw.service.impl.PmWorkerServiceImpl; import com.bonus.common.core.utils.json.FastJsonHelper; +import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; @@ -14,13 +16,16 @@ import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; import com.bonus.common.security.annotation.InnerAuth; import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 人员基础信息表(pm_worker)表控制层 @@ -147,4 +152,28 @@ public class PmWorkerExitController extends BaseController { return getDataTableError(new ArrayList<>()); } + /** + * 人员离场信息导出 + */ + // @RequiresPermissions("system:user:export") + @PostMapping("/workerExitExport") + @SysLog(title = "人员离场信息导出", businessType = OperaType.EXPORT, logType = 0, module = "施工人员->红绿灯管理->离场管理", details = "人员离场信息导出") + public void export(HttpServletResponse response, PmWorkerDto o) { + try { + List list = service.selectWorkList(o); + List exportList = list.stream() + .map(worker -> { + PmWorkerExitExport export = new PmWorkerExitExport(); + BeanUtils.copyProperties(export, worker); + return export; + }) + .collect(Collectors.toList()); + ExcelUtil util = new ExcelUtil<>(PmWorkerExitExport.class); + util.exportExcel(response, exportList, "人员出场信息导出"); + } catch (Exception e) { + logger.error(e.toString(), e); + } + } + + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java index 98985a2..e6ad211 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java @@ -1,5 +1,6 @@ package com.bonus.bmw.domain.vo; +import com.bonus.common.core.annotation.Excel; import lombok.Data; /** @@ -7,6 +8,11 @@ import lombok.Data; */ @Data public class BmWorkerBlack { + + //用于excel导出的序号一列,不需要业务逻辑处理 + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT,sort = 1) + int sequence; + /** * 编号 */ @@ -20,46 +26,55 @@ public class BmWorkerBlack { /** * 身份证 */ + @Excel(name = "身份证号码", type = Excel.Type.EXPORT, sort = 3) private String idNumber; /** * 姓名 */ + @Excel(name = "姓名", type = Excel.Type.EXPORT, sort = 2) private String name; /** * 岗位 */ + @Excel(name = "岗位", type = Excel.Type.EXPORT, sort = 4) private String postName; /** * 工程 */ + @Excel(name = "工程", type = Excel.Type.EXPORT, sort = 5) private String proName; /** * 分包 */ + @Excel(name = "分包", type = Excel.Type.EXPORT, sort = 6) private String subName; /** * 理由 */ + @Excel(name = "事件", type = Excel.Type.EXPORT, sort = 7) private String reason; /** * 开始时间 */ + @Excel(name = "开始时间", type = Excel.Type.EXPORT, sort = 8) private String startTime; /** * 结束时间 */ + @Excel(name = "结束时间", type = Excel.Type.EXPORT, sort = 9) private String endTime; /** * 是否解除 0 未解除 1 已解除 */ + @Excel(name = "是否解除", type = Excel.Type.EXPORT, sort = 10,readConverterExp = "执行中=0,已解除=1,已到解除时间=2") private Integer isRemove; /** diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java index ff135ff..25f0d0a 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java @@ -1,5 +1,6 @@ package com.bonus.bmw.domain.vo; +import com.bonus.common.core.annotation.Excel; import com.bonus.system.api.model.UploadFileVo; import lombok.Data; @@ -10,6 +11,11 @@ import java.util.List; */ @Data public class BmWorkerWageCard { + + //用于excel导出的序号一列,不需要业务逻辑处理 + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT,sort = 1) + int sequence; + /** * 编号 */ @@ -23,16 +29,19 @@ public class BmWorkerWageCard { /** * 银行卡号 */ + @Excel(name = "银行卡号", type = Excel.Type.EXPORT, sort = 4) private String bankCardCode; /** * 银行名称 */ + @Excel(name = "银行名称", type = Excel.Type.EXPORT, sort = 5) private String bankName; /** * 银行支行名称 */ + @Excel(name = "银行支行名称", type = Excel.Type.EXPORT, sort = 6) private String bankBranchName; /** @@ -48,16 +57,19 @@ public class BmWorkerWageCard { /** * 更新时间 */ + @Excel(name = "更新时间", type = Excel.Type.EXPORT, sort = 7) private String updateTime; /** * 名字 */ + @Excel(name = "姓名", type = Excel.Type.EXPORT, sort = 2) private String name; /** * 身份证 */ + @Excel(name = "身份证号码", type = Excel.Type.EXPORT, sort = 3) private String idNumber; /** diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java index 5607bfd..18935b4 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java @@ -2,6 +2,7 @@ package com.bonus.bmw.domain.vo; import java.util.Date; +import com.bonus.common.core.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -10,6 +11,11 @@ import lombok.Data; */ @Data public class PmWorker { + + //用于excel导出的序号一列,不需要业务逻辑处理 + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT,sort = 1) + int sequence; + /** * 编号 */ @@ -18,11 +24,13 @@ public class PmWorker { /** * 姓名 */ + @Excel(name = "姓名", type = Excel.Type.EXPORT, sort = 2) private String name; /** * 身份证 */ + @Excel(name = "身份证", type = Excel.Type.EXPORT, sort = 3) private String idNumber; /** @@ -80,6 +88,7 @@ public class PmWorker { /** * 入场状态 0未入场 1 已入场 */ + @Excel(name = "入场状态", type = Excel.Type.EXPORT, sort = 8,readConverterExp = "入场=1,未入场=0") private Integer einStatus; /** @@ -99,19 +108,23 @@ public class PmWorker { /** * 项目名称 */ + @Excel(name = "项目名称", type = Excel.Type.EXPORT, sort = 5) private String proName; /** * 分包名称 */ + @Excel(name = "分包名称", type = Excel.Type.EXPORT, sort = 6) private String subName; /** * 班组名称 */ + @Excel(name = "班组名称", type = Excel.Type.EXPORT, sort = 7) private String teamName; /** * 岗位名称 */ + @Excel(name = "岗位名称", type = Excel.Type.EXPORT, sort = 4) private String postName; /** @@ -135,6 +148,7 @@ public class PmWorker { /** * 入场时间 */ + @Excel(name = "入场时间", type = Excel.Type.EXPORT, sort = 9) private String einTime; /** @@ -155,4 +169,14 @@ public class PmWorker { private String workerId; + private String exitTime; + + /** + * 是否上传离职文件 0未上传 1已上传 + */ + private String isUploadFile; + /** + * 离职时间间隔 + */ + private String daysSinceExit; } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerExitExport.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerExitExport.java new file mode 100644 index 0000000..f135e9e --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerExitExport.java @@ -0,0 +1,181 @@ +package com.bonus.bmw.domain.vo; + +import com.bonus.common.core.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * 人员导出基础信息表 + */ +@Data +public class PmWorkerExitExport { + + //用于excel导出的序号一列,不需要业务逻辑处理 + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT,sort = 1) + int sequence; + + /** + * 编号 + */ + private Integer id; + + /** + * 姓名 + */ + @Excel(name = "姓名", type = Excel.Type.EXPORT, sort = 2) + private String name; + + /** + * 身份证 + */ + @Excel(name = "身份证", type = Excel.Type.EXPORT, sort = 3) + private String idNumber; + + /** + * 性别 + */ + private String sex; + + /** + * 年龄 + */ + private Integer age; + + /** + * 手机号 + */ + private String phone; + + /** + * 出生日期 生日 + */ + private String birthday; + + /** + * 民族 + */ + private String nation; + + /** + * 签发机关 + */ + private String issuingAuthority; + + /** + * 有效期开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + + /** + * 有效期结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endTime; + + /** + * 家庭住址 + */ + private String address; + + /** + * 人脸照片 + */ + private String facePhoto; + + /** + * 入场状态 0未入场 1 已入场 + */ + @Excel(name = "入场状态", type = Excel.Type.EXPORT, sort = 7,readConverterExp = "入场=1,未入场=0") + private Integer einStatus; + + /** + * 0 默认 1 黄灯 2 绿灯 3 失信人员 + */ + private Integer lightStatus; + + /** + * 创建人 + */ + private String createUser; + + /** + * 修改人 + */ + private String updateUser; + /** + * 项目名称 + */ + @Excel(name = "项目名称", type = Excel.Type.EXPORT, sort = 4) + private String proName; + /** + * 分包名称 + */ + @Excel(name = "分包名称", type = Excel.Type.EXPORT, sort = 5) + private String subName; + /** + * 班组名称 + */ + @Excel(name = "班组名称", type = Excel.Type.EXPORT, sort = 6) + private String teamName; + + /** + * 岗位名称 + */ + private String postName; + + /** + * 项目名称 + */ + private String proId; + /** + * 分包名称 + */ + private String subId; + /** + * 班组名称 + */ + private String teamId; + + /** + * 岗位名称 + */ + private String postId; + + /** + * 入场时间 + */ + @Excel(name = "入场时间", type = Excel.Type.EXPORT, sort = 8) + private String einTime; + /** + * 出场时间 + */ + @Excel(name = "出场时间", type = Excel.Type.EXPORT, sort = 9) + private String exitTime; + + /** + * 是否上传文件 0未上传 1 已上传 + */ + @Excel(name = "是否上传离职文件", type = Excel.Type.EXPORT, sort = 10,readConverterExp = "未上传=0,已上传=1") + private String isUploadFile; + /** + * 创建时间 + */ + private Integer contractId; + + + /** + * 合同信息 + */ + private BmWorkerContract bmWorkerContract; + + /** + * 工资卡信息 + */ + private BmWorkerWageCard bmWorkerWageCard; + + private String workerId; + +} \ 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 2326780..05b7e1c 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 @@ -32,7 +32,7 @@ public interface PmWorkerExitMapper { * @param einStatus * @return */ - int updateEinProRecordStatus(@Param("workerId") Integer id,@Param("einStatus") Integer einStatus); + int updateEinProRecordStatus(@Param("workerId") Integer id,@Param("einStatus") Integer einStatus,@Param("isUploadFile") Integer isUploadFile); List selectWorkListByWorkerId(PmWorkerDto o); } \ No newline at end of file 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 ddc44ff..e800c1c 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 @@ -40,7 +40,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { int n = mapper.deleteEinMsgByWorkerId(record.getWorkerId()); //修改在场记录表状态 int einStatus = 2; - int k = mapper.updateEinProRecordStatus(record.getId(),einStatus); + //是否上传文件 + int isUploadFile = 1; + int k = mapper.updateEinProRecordStatus(record.getId(),einStatus,isUploadFile); //组装数据 MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; String[] type = new String[listFile.size()]; @@ -61,7 +63,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { //删除实时在场 int j = mapper.deleteEinMsgByWorkerId(bean.getWorkerId()); int einStatus = 2; - int k = mapper.updateEinProRecordStatus(bean.getId(),einStatus); + //是否上传文件 + int isUploadFile = 0; + int k = mapper.updateEinProRecordStatus(bean.getId(),einStatus,isUploadFile); count += k; } return count==list.size()?1:0; @@ -89,6 +93,10 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService { type[i] = listFile.get(i).getType(); } List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER_EXIT, o.getId().toString(), type,"", ""); + int einStatus = 0; + //是否上传文件 + int isUploadFile = 0; + int k = mapper.updateEinProRecordStatus(o.getId(),einStatus,isUploadFile); return !uploadFileVos.isEmpty() ?1:0; } diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerExitMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerExitMapper.xml index 7b6df39..fab5d7f 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerExitMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerExitMapper.xml @@ -17,6 +17,9 @@ + + + From f9d6ed23d634ec3369530c565ffcd2e1f8001aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E4=BA=AE?= Date: Sat, 16 Aug 2025 12:39:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BA=BA=E5=91=98=EF=BC=8C=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=E5=8D=A1=EF=BC=8C=E5=90=88=E5=90=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bmw/controller/BmWorkerAttController.java | 134 +++++++++++++ .../BmWorkerWageCardController.java | 19 +- .../bmw/controller/PmWorkerController.java | 2 +- .../com/bonus/bmw/domain/vo/BmWorkerAtt.java | 158 +++++++++++++++ .../bonus/bmw/domain/vo/BmWorkerWageCard.java | 10 + .../com/bonus/bmw/domain/vo/PmWorker.java | 8 + .../bonus/bmw/mapper/BmWorkerAttMapper.java | 39 ++++ .../bmw/mapper/BmWorkerWageCardMapper.java | 8 + .../bonus/bmw/service/BmWorkerAttService.java | 43 ++++ .../bmw/service/BmWorkerWageCardService.java | 8 + .../service/impl/BmWorkerAttServiceImpl.java | 134 +++++++++++++ .../impl/BmWorkerContractServiceImpl.java | 7 +- .../impl/BmWorkerWageCardServiceImpl.java | 43 +++- .../bmw/service/impl/PmWorkerServiceImpl.java | 25 ++- .../mapper/bmw/BmWorkerAttMapper.xml | 189 ++++++++++++++++++ .../mapper/bmw/BmWorkerWageCardMapper.xml | 22 +- 16 files changed, 830 insertions(+), 19 deletions(-) create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java create mode 100644 bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java create mode 100644 bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java new file mode 100644 index 0000000..64cc099 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java @@ -0,0 +1,134 @@ +package com.bonus.bmw.controller; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.InnerAuth; +import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** +* 考勤统计 +* +* @author fly +*/ +@RestController +@RequestMapping("/workerLight") +public class BmWorkerAttController extends BaseController { +/** +* 服务对象 +*/ + @Autowired + private BmWorkerAttService service; + + /** + * 查询列表-分公司 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getSubComAttList") + @SysLog(title = "考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "分公司考勤统计") + public TableDataInfo getSubComAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getSubComAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + + /** + * 查询列表-工程 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getProAttList") + @SysLog(title = "工程考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "工程考勤统计") + public TableDataInfo getProAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getProAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 班组考勤统计-工程 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getTeamAttList") + @SysLog(title = "班组考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "班组考勤统计") + public TableDataInfo getTeamAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getTeamAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 查询列表-班组下人员列表 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getWorkerAttList") + @SysLog(title = "班组人员考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "班组人员考勤统计") + public TableDataInfo getWorkerAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getWorkerAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 考勤统计列表-人员考勤明细 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getWorkerAttListById") + @SysLog(title = "单人人员考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "单人人员考勤统计") + public TableDataInfo getWorkerAttListById(BmWorkerAtt o) { + try { + startPage(); + List list = service.getWorkerAttListById(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java index 36c29de..55ac88e 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java @@ -4,6 +4,7 @@ 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.bmw.domain.vo.PmWorker; import com.bonus.bmw.service.BmWorkerWageCardService; import com.bonus.common.core.utils.json.FastJsonHelper; import com.bonus.common.core.utils.poi.ExcelUtil; @@ -57,11 +58,27 @@ public class BmWorkerWageCardController extends BaseController { return getDataTableError(new ArrayList<>()); } + //, requiresPermissions = @RequiresPermissions("system:wageCard:edit") + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) + @PostMapping("/select/{id}") + @SysLog(title = "工资卡管理", businessType = OperaType.QUERY, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "查看工资卡") + public AjaxResult select(@PathVariable("id") Integer id) { + try { + AjaxResult ajax = AjaxResult.success(); + BmWorkerWageCard worker = service.selectByPrimaryKey(id); + ajax.put("data", worker); + return ajax; + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + //, requiresPermissions = @RequiresPermissions("system:wageCard:edit") @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) @PostMapping("/edit") @SysLog(title = "工资卡管理", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "修改工资卡") - public AjaxResult edit(@RequestParam(value = "files") MultipartFile[] files, @RequestParam(value = "fileMsg") String fileMsg, @RequestParam(value = "params")String params) { + public AjaxResult edit(@RequestParam(value = "files",required = false) MultipartFile[] files, @RequestParam(value = "fileMsg",required = false) String fileMsg, @RequestParam(value = "params")String params) { try { List listFile = FastJsonHelper.jsonArrStrToBeanList(fileMsg, WebFileDto.class); BmWorkerWageCard o = FastJsonHelper.jsonStrToBean(params, BmWorkerWageCard.class); 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 20e13e9..426ac51 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 @@ -107,7 +107,7 @@ public class PmWorkerController extends BaseController { @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) @PostMapping("/edit") @SysLog(title = "人员入场管理", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->人员入场管理", details = "修改人员入场") - public AjaxResult edit(@RequestParam(value = "files") MultipartFile[] files,@RequestParam(value = "fileMsg") String fileMsg, @RequestParam(value = "params")String params) { + public AjaxResult edit(@RequestParam(value = "files",required = false) MultipartFile[] files,@RequestParam(value = "fileMsg",required = false) String fileMsg, @RequestParam(value = "params")String params) { try { List listFile = FastJsonHelper.jsonArrStrToBeanList(fileMsg, WebFileDto.class); // 验证对应关系 diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java new file mode 100644 index 0000000..ef4ee65 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java @@ -0,0 +1,158 @@ +package com.bonus.bmw.domain.vo; + +import lombok.Data; + +/** + * 所有在场人员实时信息表-离场就删除 + */ +@Data +public class BmWorkerAtt { + + /** + * 工程 + */ + private String proName; + + /** + * 工程id + */ + private Integer proId; + + /** + * 班组 + */ + private String teamName; + + /** + * 班组id + */ + private Integer teamId; + + /** + * 分包 + */ + private String subName; + + /** + * 分包id + */ + private Integer subId; + + /** + * 工种 + */ + private String postName; + + /** + * 工种id + */ + private Integer postId; + + /** + * 分公司 + */ + private String subComName; + + /** + * 分公司id + */ + private String subComId; + + /** + * 姓名 + */ + private String name; + /** + * 身份证号 + */ + private String idNumber; + + /** + * 在建工程数量 + */ + private Integer buildProNum; + + /** + * 完工工程数量 + */ + private Integer completedProNum; + + /** + * 筹建工程数量 + */ + private Integer preProNum; + + /** + * 分包数量 + */ + private Integer subNum; + + /** + * 班组数 + */ + private Integer teamNum; + + /** + * 在场人员数量 + */ + private Integer einNum; + + /** + * 考勤人数 + */ + private Integer attNum; + + /** + * 黄灯数量 + */ + private String yellowNum; + /** + * 绿灯数量 + */ + private String greenNum; + + + /** + * 日期 + */ + private String currentDay; + + /** + * 考勤时间 + */ + private String startDate; + /** + * 考勤时间 + */ + private String endDate; + + private Integer workerId; + + private Integer notAttNum; + + /** + * 入场时间 + */ + private String einDay; + /** + * 考勤日期 + */ + private String attDay; + /** + * 考勤状态 + */ + private Integer isAtt; + /** + * 是否补卡 + */ + private String isRepair; + /** + * 设备名称 + */ + private String deviceName; + /** + * 考勤时间 + */ + private String attTime; + +} \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java index 25f0d0a..cd2856e 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java @@ -81,4 +81,14 @@ public class BmWorkerWageCard { * 工资卡照片 */ private List files; + /** + * 是否上传 0未上传 1已上传 + */ + private String isUpload; + + /** + * 照片id + */ + private String delIds; + } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java index 18935b4..5d0b8f2 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java @@ -1,8 +1,10 @@ package com.bonus.bmw.domain.vo; import java.util.Date; +import java.util.List; import com.bonus.common.core.annotation.Excel; +import com.bonus.system.api.model.UploadFileVo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -179,4 +181,10 @@ public class PmWorker { * 离职时间间隔 */ private String daysSinceExit; + + /** + * 人脸照片 + */ + private List files; + } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java new file mode 100644 index 0000000..ba240f4 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java @@ -0,0 +1,39 @@ +package com.bonus.bmw.mapper; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.domain.vo.BmWorkerLight; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface BmWorkerAttMapper { + + List getSubComAttList(BmWorkerAtt o); + + List getProAttList(BmWorkerAtt o); + + List getWorkerAttList(BmWorkerAtt o); + + List getTeamAttList(BmWorkerAtt o); + + /** + * 根据查询区间获取人员最新基础信息(班组分包等) + * @param o + * @return + */ + List getWorkerEinMsgListByDateRange(BmWorkerAtt o); + /** + * 根据查询区间获取人员考勤天数 + * @param o + * @return + */ + List getWorkerAttDayNumByDateRange(BmWorkerAtt o); + + /** + * 根据查询区间获取单个人员考勤记录 + * @param o + * @return + */ + List getWorkerAttListById(BmWorkerAtt o); +} \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java index b3ef006..bc39337 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java @@ -51,4 +51,12 @@ public interface BmWorkerWageCardMapper { int selectWageCardAndContract(Integer id); void updateEinMsgByWorkerId(@Param("workerId") Integer id,@Param("lightStatus") Integer lightStatus,@Param("lightDate") String lightDate); + + /** + * select by primary key + * + * @param id primary key + * @return object by id + */ + BmWorkerWageCard selectByPrimaryKey(Integer id); } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java new file mode 100644 index 0000000..aea397e --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java @@ -0,0 +1,43 @@ +package com.bonus.bmw.service; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; + +import java.util.List; + +public interface BmWorkerAttService { + + /** + * 分公司考勤统计 + * @param o + * @return + */ + List getSubComAttList(BmWorkerAtt o); + + /** + * 工程考勤统计 + * @param o + * @return + */ + List getProAttList(BmWorkerAtt o); + + /** + * 人员考勤统计 + * @param o + * @return + */ + List getWorkerAttList(BmWorkerAtt o); + + /** + * 班组考勤统计 + * @param o + * @return + */ + List getTeamAttList(BmWorkerAtt o); + + /** + * 单人人员考勤统计 + * @param o + * @return + */ + List getWorkerAttListById(BmWorkerAtt o); +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java index 35706b5..7b5b012 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java @@ -2,6 +2,7 @@ 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; @@ -56,5 +57,12 @@ public interface BmWorkerWageCardService { * @return */ AjaxResult lookFileByPrimaryKey(Integer id); + + /** + * 查询工资卡信息 + * @param id + * @return + */ + BmWorkerWageCard selectByPrimaryKey(Integer id); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java new file mode 100644 index 0000000..7fb48d0 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java @@ -0,0 +1,134 @@ +package com.bonus.bmw.service.impl; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.mapper.BmWorkerAttMapper; +import com.bonus.bmw.mapper.BmWorkerAttMapper; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.bmw.service.BmWorkerAttService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class BmWorkerAttServiceImpl implements BmWorkerAttService { + + @Autowired + private BmWorkerAttMapper mapper; + + /** + * 分公司考勤统计 + * @param o + * @return + */ + @Override + public List getSubComAttList(BmWorkerAtt o) { + return mapper.getSubComAttList(o); + } + + @Override + public List getProAttList(BmWorkerAtt o) { + return mapper.getProAttList(o); + } + + @Override + public List getTeamAttList(BmWorkerAtt o) { + return mapper.getTeamAttList(o); + } + + @Override + public List getWorkerAttListById(BmWorkerAtt o) { + List list = mapper.getWorkerAttListById(o); + // 如果列表为空,给它一个空的列表 + if (list == null) { + list = new ArrayList<>(); + } + // 如果没有指定日期范围,则直接返回原始列表 + if (o.getStartDate() == null || o.getEndDate() == null) { + return list; + } + LocalDate startDate = LocalDate.parse(o.getStartDate()); + LocalDate endDate = LocalDate.parse(o.getEndDate()); + + // 生成日期范围内的所有日期 (Java 8 兼容方式) + List dateRange = new ArrayList<>(); + LocalDate currentDate = startDate; + while (!currentDate.isAfter(endDate)) { + dateRange.add(currentDate); + currentDate = currentDate.plusDays(1); + } + + // 补全缺失的日期 + Map existingDataMap = list.stream() + .filter(item -> item.getEinDay() != null) + .collect(Collectors.toMap( + item -> LocalDate.parse(item.getEinDay()), + item -> item, + (existing, replacement) -> existing + )); + +// List finalList = list; + return dateRange.stream() + .map(date -> { + if (existingDataMap.containsKey(date)) { + return existingDataMap.get(date); + } else { + // 创建缺失日期的默认数据 + BmWorkerAtt defaultAtt = new BmWorkerAtt(); + // 复制必要字段 +// if (!finalList.isEmpty()) { +// BmWorkerAtt source = finalList.get(0); +// defaultAtt.setWorkerId(source.getWorkerId()); +// } + defaultAtt.setEinDay(date.toString()); + defaultAtt.setIsAtt(3); + return defaultAtt; + } + }) + .sorted((a, b) -> b.getEinDay().compareTo(a.getEinDay())) // 倒序排序 + .collect(Collectors.toList()); + } + + + /** + * 人员考勤统计 + * @param o + * @return + */ + @Override + public List getWorkerAttList(BmWorkerAtt o) { + //1.查询 工程 班组 时间区间 姓名 身份证号码 + //根据区间产讯处最新的人员基础数据 + List list = mapper.getWorkerEinMsgListByDateRange(o); + //查询考勤天数 根据 时间区间 工程 班组 查询 + List listAtt = mapper.getWorkerAttDayNumByDateRange(o); + // 1. 安全地将 listAtt 转为 Map + Map attNumMap = listAtt.stream() + .filter(Objects::nonNull) // 过滤 null 对象 + .filter(item -> item.getWorkerId() != null) // 确保 workerId 不为 null + .collect(Collectors.toMap( + BmWorkerAtt::getWorkerId, // key: workerId + BmWorkerAtt::getAttNum, // value: attNum + (existing, replacement) -> replacement // 如果 key 重复,使用新的值(后者) + )); + long daysBetween = getDaysBetween(o.getStartDate(), o.getEndDate()); + // 2. 遍历 list,根据 workerId 填充 attNum + list.forEach(item -> { + Integer attNum = attNumMap.get(item.getWorkerId()); + item.setAttNum(attNum != null ? attNum : 0); // 未匹配上则设为 0 + item.setNotAttNum((int) (daysBetween - item.getAttNum())); + }); + return list; + } + + public static long getDaysBetween(String startDateStr, String endDateStr) { + LocalDate start = LocalDate.parse(startDateStr); + LocalDate end = LocalDate.parse(endDateStr); + // 计算两个日期之间的天数差(包含边界) + return ChronoUnit.DAYS.between(start, end) + 1; + } + +} 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 8087b60..791aa28 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 @@ -102,7 +102,12 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{ @Override public BmWorkerContract selectContractListByWorkerIdAndValid(BmWorkerContract o) { - return mapper.selectContractListByWorkerIdAndValid(o); + BmWorkerContract workerContract = mapper.selectContractListByWorkerIdAndValid(o); + if(workerContract != null){ + List contractFile = fileUploadUtils.getFileList("", workerContract.getId().toString(), Constants.FILE_UPLOAD_CONTRACT, ""); + workerContract.setFiles(contractFile); + } + return workerContract; } @Override diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java index ac2fe1f..110f0ef 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.bonus.bmw.domain.dto.FileBasicMsgDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.BmWorkerWageCard; +import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.bmw.mapper.BmWorkerWageCardMapper; import com.bonus.bmw.service.BmWorkerWageCardService; import com.bonus.common.core.constant.Constants; @@ -39,17 +40,23 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { public int updateByPrimaryKey(BmWorkerWageCard record, List listFile) { //存在则删除后新增,不存在则新增 if(record.getId() != null){ - log.info("存在则删除后新增,不存在则新增"); - //删除工资卡图片 删除minio文件 - fileUploadUtils.delFileListById("", record.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD,""); - //组装数据 - 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(); + if(record.getDelIds() != null){ + //修改时删除部分图片 + String[] split = record.getDelIds().split(","); + for (String s : split) { + fileUploadUtils.delFileListById(s,"",Constants.FILE_UPLOAD_WAGE_CARD, ""); + } + } + 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_WAGE_CARD, record.getId().toString(), type,"", ""); } - List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WAGE_CARD, record.getId().toString(), type,"", ""); updateByPrimaryKeySelective(record); return 1; }else{ @@ -97,7 +104,11 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { @Override public BmWorkerWageCard selectWageCardByWorkerId(BmWorkerWageCard o) { - return mapper.selectWageCardByWorkerId(o); + BmWorkerWageCard bmWorkerWageCard = mapper.selectWageCardByWorkerId(o); + if(bmWorkerWageCard != null){ + bmWorkerWageCard.setFiles(fileUploadUtils.getFileList("", bmWorkerWageCard.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, "")); + } + return bmWorkerWageCard; } /** @@ -136,6 +147,16 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { return AjaxResult.success(contractFile); } + @Override + public BmWorkerWageCard selectByPrimaryKey(Integer id) { + BmWorkerWageCard wageCard= mapper.selectByPrimaryKey(id); + if(wageCard != null){ + List contractFile = fileUploadUtils.getFileList("", wageCard.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, ""); + wageCard.setFiles(contractFile); + } + return wageCard; + } + private int selectWageCardAndContract(Integer id) { return mapper.selectWageCardAndContract(id); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java index 793a300..b03683b 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java @@ -58,8 +58,8 @@ public class PmWorkerServiceImpl implements PmWorkerService{ record.setCreateUser(SecurityUtils.getUsername()); int insert = mapper.insert(record); if(insert > 0){ - List collect = fileMsg.stream().filter(data -> "人脸".equals(data.getName())).collect(Collectors.toList()); - //组装数据 + List collect = fileMsg.stream().filter(data -> "faceImg".equals(data.getName())).collect(Collectors.toList()); + //组装数据 MultipartFile[] workerFiles = new MultipartFile[collect.size()]; String[] type = new String[collect.size()]; for (int i = 0; i < collect.size(); i++) { @@ -98,13 +98,13 @@ public class PmWorkerServiceImpl implements PmWorkerService{ if(bmWorkerWageCard != null && StringUtil.isNotEmpty(bmWorkerWageCard.getBankCardCode())){ bmWorkerWageCard.setCreateUser(SecurityUtils.getUsername()); bmWorkerWageCard.setWorkerId(record.getId()); - List collect = fileMsg.stream().filter(data -> "工资卡".equals(data.getName())).collect(Collectors.toList()); + List collect = fileMsg.stream().filter(data -> "wageCard".equals(data.getName())).collect(Collectors.toList()); wageCardService.updateByPrimaryKey(bmWorkerWageCard,collect); } if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractCode())){ bmWorkerContract.setCreateUser(SecurityUtils.getUsername()); bmWorkerContract.setWorkerId(record.getId()); - List collect = fileMsg.stream().filter(data -> "合同".equals(data.getName())).collect(Collectors.toList()); + List collect = fileMsg.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList()); contractService.updateByPrimaryKey(bmWorkerContract,collect); record.setContractId(bmWorkerContract.getId()); } @@ -114,6 +114,9 @@ public class PmWorkerServiceImpl implements PmWorkerService{ public PmWorker selectByPrimaryKey(Integer id) { //人员数据 PmWorker worker = mapper.selectByPrimaryKey(id); + if(worker != null){ + worker.setFiles(fileUploadUtils.getFileList("", worker.getId().toString(), Constants.FILE_UPLOAD_WORKER, "")); + } //查询工资卡 数据 BmWorkerWageCard wageCard = new BmWorkerWageCard(); wageCard.setWorkerId(id); @@ -140,6 +143,20 @@ public class PmWorkerServiceImpl implements PmWorkerService{ //更新基础数据 record.setUpdateUser(SecurityUtils.getUsername()); int update = mapper.updateByPrimaryKey(record); + //人脸照片是否修改 + List collect = fileMsg.stream().filter(data -> "faceImg".equals(data.getName())).collect(Collectors.toList()); + if(!collect.isEmpty()){ + String s = fileUploadUtils.delFileListById("", record.getId().toString(), Constants.FILE_UPLOAD_WORKER, ""); + //组装数据 + MultipartFile[] workerFiles = new MultipartFile[collect.size()]; + String[] type = new String[collect.size()]; + for (int i = 0; i < collect.size(); i++) { + workerFiles[i] = collect.get(i).getFile(); + type[i] = collect.get(i).getType(); + } + //人脸的数据添加 + List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER, record.getId().toString(), type,"", ""); + } //更新入场记录最新记录标识 再入场,清除最新标识 mapper.updateEinRecordLast(record.getId()); //已经入过场了 diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml new file mode 100644 index 0000000..56e72a6 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml index e1337c9..09fb9dc 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml @@ -13,6 +13,7 @@ + id, worker_id, bank_card_code, bank_name, bank_branch_name, create_user, update_user @@ -38,7 +39,8 @@ bwwc.bank_card_code, bwwc.bank_name, bwwc.bank_branch_name, - bwwc.update_time + bwwc.update_time, + if(bwwc.id is not null, 1, 0) AS is_upload FROM pm_worker pw LEFT JOIN `bm_worker_wage_card` bwwc ON pw.id = bwwc.worker_id @@ -60,6 +62,12 @@ AND bwwc.worker_id LIKE CONCAT('%', #{workerId}, '%') + + AND bwwc.id is not null + + + AND bwwc.id is null + + SELECT + bwwc.id, + bwwc.bank_card_code, + bwwc.bank_name, + bwwc.bank_branch_name + FROM + `bm_worker_wage_card` bwwc + WHERE + bwwc.id = #{id} + \ No newline at end of file