From 433940411f7e335ffaad7769029b4a10e04c9336 Mon Sep 17 00:00:00 2001 From: aikai Date: Fri, 14 Mar 2025 11:11:19 +0800 Subject: [PATCH 1/8] =?UTF-8?q?refactor(crm):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=BB=A9=E6=95=88=E8=80=83=E6=A0=B8=E3=80=81=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E5=92=8C=E6=9D=83=E9=87=8D=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=9A=84=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除了 SalesPerformanceAssessmentController、SalesPerformanceSet --- .../SalesPerformanceAssessmentController.java | 5 ----- .../SalesPerformanceSettlementController.java | 14 -------------- .../SalesPerformanceWeightController.java | 2 -- 3 files changed, 21 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceassessment/SalesPerformanceAssessmentController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceassessment/SalesPerformanceAssessmentController.java index 7e053868..80e661f7 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceassessment/SalesPerformanceAssessmentController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceassessment/SalesPerformanceAssessmentController.java @@ -40,14 +40,12 @@ public class SalesPerformanceAssessmentController { @PostMapping("/create") @Operation(summary = "创建绩效考核设置") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-assessment:create')") public CommonResult createSalesPerformanceAssessment(@Valid @RequestBody SalesPerformanceAssessmentSaveReqVO createReqVO) { return success(salesPerformanceAssessmentService.createSalesPerformanceAssessment(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新绩效考核设置") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-assessment:update')") public CommonResult updateSalesPerformanceAssessment(@Valid @RequestBody SalesPerformanceAssessmentSaveReqVO updateReqVO) { salesPerformanceAssessmentService.updateSalesPerformanceAssessment(updateReqVO); return success(true); @@ -56,7 +54,6 @@ public class SalesPerformanceAssessmentController { @DeleteMapping("/delete") @Operation(summary = "删除绩效考核设置") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('crm:sales-performance-assessment:delete')") public CommonResult deleteSalesPerformanceAssessment(@RequestParam("id") Long id) { salesPerformanceAssessmentService.deleteSalesPerformanceAssessment(id); return success(true); @@ -65,7 +62,6 @@ public class SalesPerformanceAssessmentController { @GetMapping("/get") @Operation(summary = "获得绩效考核设置") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-assessment:query')") public CommonResult getSalesPerformanceAssessment(@RequestParam("id") Long id) { SalesPerformanceAssessmentDO salesPerformanceAssessment = salesPerformanceAssessmentService.getSalesPerformanceAssessment(id); return success(BeanUtils.toBean(salesPerformanceAssessment, SalesPerformanceAssessmentRespVO.class)); @@ -73,7 +69,6 @@ public class SalesPerformanceAssessmentController { @GetMapping("/page") @Operation(summary = "获得绩效考核设置分页") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-assessment:query')") public CommonResult> getSalesPerformanceAssessmentPage(@Valid SalesPerformanceAssessmentPageReqVO pageReqVO) { PageResult pageResult = salesPerformanceAssessmentService.getSalesPerformanceAssessmentPage(pageReqVO); return success(BeanUtils.toBean(pageResult, SalesPerformanceAssessmentRespVO.class)); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/SalesPerformanceSettlementController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/SalesPerformanceSettlementController.java index c5c990e9..183edf0a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/SalesPerformanceSettlementController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformancesettlement/SalesPerformanceSettlementController.java @@ -10,17 +10,14 @@ import cn.iocoder.yudao.module.crm.controller.admin.salesperformancesettlement.v import cn.iocoder.yudao.module.crm.controller.admin.salesperformancesettlement.vo.SalesPerformanceSettlementRespVO; import cn.iocoder.yudao.module.crm.controller.admin.salesperformancesettlement.vo.SalesPerformanceSettlementSaveReqVO; import cn.iocoder.yudao.module.crm.dal.dataobject.salesperformancesettlement.SalesPerformanceSettlementDO; -import cn.iocoder.yudao.module.crm.dal.dataobject.userlivetree.UserLiveTreeDO; import cn.iocoder.yudao.module.crm.service.salesperformancesettlement.SalesPerformanceSettlementService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; @@ -49,7 +46,6 @@ public class SalesPerformanceSettlementController { @DeleteMapping("/delete") @Operation(summary = "删除销售业绩结算记录") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('crm:sales-performance-settlement:delete')") public CommonResult deleteSalesPerformanceSettlement(@RequestParam("id") Long id) { salesPerformanceSettlementService.deleteSalesPerformanceSettlement(id); return success(true); @@ -58,7 +54,6 @@ public class SalesPerformanceSettlementController { @GetMapping("/get") @Operation(summary = "获得销售业绩结算记录") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-settlement:query')") public CommonResult getSalesPerformanceSettlement(@RequestParam("id") Long id) { SalesPerformanceSettlementDO salesPerformanceSettlement = salesPerformanceSettlementService.getSalesPerformanceSettlement(id); return success(BeanUtils.toBean(salesPerformanceSettlement, SalesPerformanceSettlementRespVO.class)); @@ -73,7 +68,6 @@ public class SalesPerformanceSettlementController { @GetMapping("/export-excel") @Operation(summary = "导出销售业绩结算记录 Excel") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-settlement:export')") @OperateLog(type = EXPORT) public void exportSalesPerformanceSettlementExcel(@Valid SalesPerformanceSettlementPageReqVO pageReqVO, HttpServletResponse response) throws IOException { @@ -84,12 +78,4 @@ public class SalesPerformanceSettlementController { BeanUtils.toBean(list, SalesPerformanceSettlementRespVO.class)); } - - @GetMapping("/test") - @Operation(summary = "测试") - @PermitAll - public CommonResult test() { - salesPerformanceSettlementService.settlement(); - return success(true); - } } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceweight/SalesPerformanceWeightController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceweight/SalesPerformanceWeightController.java index 1d61dcba..e20a0e45 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceweight/SalesPerformanceWeightController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/salesperformanceweight/SalesPerformanceWeightController.java @@ -28,7 +28,6 @@ public class SalesPerformanceWeightController { @PutMapping("/saveOrEdit") @Operation(summary = "新增/修改销售业绩权重设置") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-weight:update')") public CommonResult saveOrEdit(@Valid @RequestBody SalesPerformanceWeightSaveReqVO updateReqVO) { salesPerformanceWeightService.saveOrEdit(updateReqVO); return success(true); @@ -36,7 +35,6 @@ public class SalesPerformanceWeightController { @GetMapping("/get") @Operation(summary = "获得销售业绩权重设置") - @PreAuthorize("@ss.hasPermission('crm:sales-performance-weight:query')") public CommonResult getSalesPerformanceWeight() { SalesPerformanceWeightDO salesPerformanceWeight = salesPerformanceWeightService.getSalesPerformanceWeight(); return success(BeanUtils.toBean(salesPerformanceWeight, SalesPerformanceWeightRespVO.class)); From 05ac0977110a25ff1986835087d8d4d74110be74 Mon Sep 17 00:00:00 2001 From: aikai Date: Fri, 14 Mar 2025 11:21:22 +0800 Subject: [PATCH 2/8] =?UTF-8?q?crm=E7=94=9F=E6=88=90=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-prod.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/application-prod.yaml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/application-prod.yaml index 59f47f33..e1d983cf 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/application-prod.yaml +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/application-prod.yaml @@ -81,9 +81,16 @@ spring: --- #################### 定时任务相关配置 #################### xxl: job: - enabled: false # 是否开启调度中心,默认为 true 开启 + enabled: true # 是否开启调度中心,默认为 true 开启 admin: addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址 + executor: + appname: ${spring.application.name} # 执行器 AppName + ip: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; + port: 6670 # ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; + logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; + #accessToken: default_token + logretentiondays: 30 # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能; --- #################### 服务保障相关配置 #################### From 6380c668e9fa23181e6144fa0350a3fc23bab3fa Mon Sep 17 00:00:00 2001 From: aikai Date: Mon, 17 Mar 2025 09:12:53 +0800 Subject: [PATCH 3/8] =?UTF-8?q?feat(crm):=20=E5=A2=9E=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=AE=A2=E6=88=B7=E6=9F=A5=E8=AF=A2-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20TimeQueryVO=20=E7=B1=BB=E7=94=A8=E4=BA=8E=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=AD=9B=E9=80=89=20-=20=E5=9C=A8=20RankController=20?= =?UTF-8?q?=E5=92=8C=20RankService=20=E4=B8=AD=E9=9B=86=E6=88=90=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD-=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20CrmCustomerMapper=20=E4=B8=AD=E7=9A=84=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=96=B9=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E5=92=8C=E5=A4=9A=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=20-=20=E5=9C=A8=20CrmCustomerDO=20=E4=B8=AD=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20ownUserName=20=E5=AD=97=E6=AE=B5=20-=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=20XML=20=E6=96=87=E4=BB=B6=E4=BB=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=96=B0=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/crmanalysis/RankController.java | 9 ++-- .../admin/crmanalysis/vo/TimeQueryVO.java | 16 ++++++ .../userlivetree/UserLiveTreeController.java | 6 --- .../dataobject/crmcustomer/CrmCustomerDO.java | 4 ++ .../mysql/crmcontract/CrmContractMapper.java | 3 +- .../CrmContractReceivablesMapper.java | 3 +- .../mysql/crmcustomer/CrmCustomerMapper.java | 36 +++++++------ .../job/salesperformance/AutoConfirmJob.java | 2 +- .../crm/service/crmanalysis/RankService.java | 5 +- .../service/crmanalysis/RankServiceImpl.java | 9 ++-- .../crmcustomer/CrmCustomerServiceImpl.java | 7 +-- .../mapper/crmcontract/CrmContractMapper.xml | 8 +++ .../CrmContractReceivablesMapper.xml | 8 +++ .../mapper/crmcustomer/CrmCustomerMapper.xml | 53 +++++++++++++++++++ 14 files changed, 130 insertions(+), 39 deletions(-) create mode 100644 yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/vo/TimeQueryVO.java diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/RankController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/RankController.java index ae406190..d81d6eeb 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/RankController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/RankController.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.controller.admin.crmanalysis; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.ContractVO; +import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.TimeQueryVO; import cn.iocoder.yudao.module.crm.service.crmanalysis.RankService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -28,14 +29,14 @@ public class RankController { @GetMapping("/contract") @Operation(summary = "获得合同排名") - public CommonResult> getContractRank() { - return success(rankService.getContractRank()); + public CommonResult> getContractRank(TimeQueryVO vo) { + return success(rankService.getContractRank(vo)); } @GetMapping("/receivables") @Operation(summary = "获得回款排名") - public CommonResult> getRecevablesRank() { - return success(rankService.getReceivablesRank()); + public CommonResult> getRecevablesRank(TimeQueryVO vo) { + return success(rankService.getReceivablesRank(vo)); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/vo/TimeQueryVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/vo/TimeQueryVO.java new file mode 100644 index 00000000..3835fbe3 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmanalysis/vo/TimeQueryVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Data +public class TimeQueryVO { + @Schema(description = "时间数组") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] times; +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/userlivetree/UserLiveTreeController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/userlivetree/UserLiveTreeController.java index 3c703db2..a4d942d0 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/userlivetree/UserLiveTreeController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/userlivetree/UserLiveTreeController.java @@ -44,7 +44,6 @@ public class UserLiveTreeController { @PostMapping("/create") @Operation(summary = "创建crm用户结构树") - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:create')") public CommonResult createUserLiveTree(@Valid @RequestBody UserLiveTreeSaveReqVO createReqVO) { return success(userLiveTreeService.createUserLiveTree(createReqVO)); } @@ -58,7 +57,6 @@ public class UserLiveTreeController { @PutMapping("/update") @Operation(summary = "更新crm用户结构树") - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:update')") public CommonResult updateUserLiveTree(@Valid @RequestBody UserLiveTreeSaveReqVO updateReqVO) { userLiveTreeService.updateUserLiveTree(updateReqVO); return success(true); @@ -67,7 +65,6 @@ public class UserLiveTreeController { @DeleteMapping("/delete") @Operation(summary = "删除crm用户结构树") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:delete')") public CommonResult deleteUserLiveTree(@RequestParam("id") Long id) { userLiveTreeService.deleteUserLiveTree(id); return success(true); @@ -76,7 +73,6 @@ public class UserLiveTreeController { @GetMapping("/get") @Operation(summary = "获得crm用户结构树") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:query')") public CommonResult getUserLiveTree(@RequestParam("id") Long id) { UserLiveTreeDO userLiveTree = userLiveTreeService.getUserLiveTree(id); return success(BeanUtils.toBean(userLiveTree, UserLiveTreeRespVO.class)); @@ -93,7 +89,6 @@ public class UserLiveTreeController { @GetMapping("/page") @Operation(summary = "获得crm用户结构树分页") - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:query')") public CommonResult> getUserLiveTreePage(@Valid UserLiveTreePageReqVO pageReqVO) { return success(userLiveTreeService.getUserLiveTreePage(pageReqVO)); @@ -101,7 +96,6 @@ public class UserLiveTreeController { @GetMapping("/export-excel") @Operation(summary = "导出crm用户结构树 Excel") - @PreAuthorize("@ss.hasPermission('crm:user-live-tree:export')") @OperateLog(type = EXPORT) public void exportUserLiveTreeExcel(@Valid UserLiveTreePageReqVO pageReqVO, HttpServletResponse response) throws IOException { diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmcustomer/CrmCustomerDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmcustomer/CrmCustomerDO.java index bedb397a..53b7aca3 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmcustomer/CrmCustomerDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/crmcustomer/CrmCustomerDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.dal.dataobject.crmcustomer; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -145,4 +146,7 @@ public class CrmCustomerDO extends BaseDO { */ private Integer followStatus; + @TableField(exist = false) + private String ownUserName; + } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontract/CrmContractMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontract/CrmContractMapper.java index 49c629b9..2a952745 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontract/CrmContractMapper.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontract/CrmContractMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.ContractVO; +import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.TimeQueryVO; import cn.iocoder.yudao.module.crm.controller.admin.crmcontract.vo.CrmContractPageReqVO; import cn.iocoder.yudao.module.crm.controller.admin.crmcontract.vo.CrmContractRespVO; import cn.iocoder.yudao.module.crm.dal.dataobject.crmcontract.CrmContractDO; @@ -55,7 +56,7 @@ public interface CrmContractMapper extends BaseMapperX { .orderByDesc(CrmContractDO::getId)); } - List selectContractTop(); + List selectContractTop(@Param("vo") TimeQueryVO vo); /** * 获取用户合同产品数量 diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontractreceivables/CrmContractReceivablesMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontractreceivables/CrmContractReceivablesMapper.java index b7dbb117..694fdc0a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontractreceivables/CrmContractReceivablesMapper.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcontractreceivables/CrmContractReceivablesMapper.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.ContractVO; +import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.TimeQueryVO; import cn.iocoder.yudao.module.crm.controller.admin.crmcontractreceivables.vo.CrmContractReceivablesPageReqVO; import cn.iocoder.yudao.module.crm.controller.admin.crmcontractreceivables.vo.CrmContractReceivablesRespVO; import cn.iocoder.yudao.module.crm.dal.dataobject.crmcontractreceivables.CrmContractReceivablesDO; @@ -45,5 +46,5 @@ public interface CrmContractReceivablesMapper extends BaseMapperX selectReceivablesTop(); + List selectReceivablesTop(@Param("vo") TimeQueryVO vo); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcustomer/CrmCustomerMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcustomer/CrmCustomerMapper.java index 00e6b7d4..04143cdd 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcustomer/CrmCustomerMapper.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/crmcustomer/CrmCustomerMapper.java @@ -22,24 +22,26 @@ import java.util.List; @Mapper public interface CrmCustomerMapper extends BaseMapperX { - default PageResult selectPage(CrmCustomerPageReqVO reqVO, List ids) { +// default PageResult selectPage(CrmCustomerPageReqVO reqVO, List ids) { +// +// +// return selectPage(reqVO, new LambdaQueryWrapperX() +// //.eq(CustomerTypesEnum.OPEN.getValue().equals(reqVO.getType()),) +// .inIfPresent(CrmCustomerDO::getOwnerUserId, ids) +// .likeIfPresent(CrmCustomerDO::getName, reqVO.getName()) +// .eqIfPresent(CrmCustomerDO::getMobile, reqVO.getMobile()) +// .eqIfPresent(CrmCustomerDO::getTelephone, reqVO.getTelephone()) +// .eqIfPresent(CrmCustomerDO::getDealStatus, reqVO.getDealStatus()) +// .eqIfPresent(CrmCustomerDO::getLevel, reqVO.getLevel()) +// .eqIfPresent(CrmCustomerDO::getIndustry, reqVO.getIndustry()) +// .eqIfPresent(CrmCustomerDO::getSource, reqVO.getSource()) +// .eqIfPresent(CrmCustomerDO::getWeixin, reqVO.getWeixin()) +// .eqIfPresent(CrmCustomerDO::getQq, reqVO.getQq()) +// .eqIfPresent(CrmCustomerDO::getFollowStatus, reqVO.getFollowStatus()) +// .orderByDesc(CrmCustomerDO::getId)); +// } - - return selectPage(reqVO, new LambdaQueryWrapperX() - //.eq(CustomerTypesEnum.OPEN.getValue().equals(reqVO.getType()),) - .inIfPresent(CrmCustomerDO::getOwnerUserId, ids) - .likeIfPresent(CrmCustomerDO::getName, reqVO.getName()) - .eqIfPresent(CrmCustomerDO::getMobile, reqVO.getMobile()) - .eqIfPresent(CrmCustomerDO::getTelephone, reqVO.getTelephone()) - .eqIfPresent(CrmCustomerDO::getDealStatus, reqVO.getDealStatus()) - .eqIfPresent(CrmCustomerDO::getLevel, reqVO.getLevel()) - .eqIfPresent(CrmCustomerDO::getIndustry, reqVO.getIndustry()) - .eqIfPresent(CrmCustomerDO::getSource, reqVO.getSource()) - .eqIfPresent(CrmCustomerDO::getWeixin, reqVO.getWeixin()) - .eqIfPresent(CrmCustomerDO::getQq, reqVO.getQq()) - .eqIfPresent(CrmCustomerDO::getFollowStatus, reqVO.getFollowStatus()) - .orderByDesc(CrmCustomerDO::getId)); - } + IPage selectPage(@Param("page") IPage page, @Param("dto") CrmCustomerPageReqVO pageReqVO, @Param("ids") List ids); IPage selectPageList2(@Param("page") IPage page, @Param("dto") CrmCustomerPageReqVO pageReqVO, @Param("ids") List ids); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/salesperformance/AutoConfirmJob.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/salesperformance/AutoConfirmJob.java index 3f8accce..857a0a71 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/salesperformance/AutoConfirmJob.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/salesperformance/AutoConfirmJob.java @@ -13,7 +13,7 @@ import javax.annotation.Resource; @Slf4j public class AutoConfirmJob { - // TODO: 2024/11/04 - 每个月月初03号 未确认的 自动确认上个月的结算记录 + // TODO: 2024/11/04 - 每个月月初04号 0点10分 未确认的 自动确认上个月的结算记录 @Resource private SalesPerformanceSettlementService salesPerformanceSettlementService; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankService.java index 0e821556..b116eb83 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankService.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.crmanalysis; import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.ContractVO; +import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.TimeQueryVO; import java.util.List; @@ -13,8 +14,8 @@ import java.util.List; public interface RankService { - List getContractRank(); + List getContractRank(TimeQueryVO vo); - List getReceivablesRank(); + List getReceivablesRank(TimeQueryVO vo); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankServiceImpl.java index d9cabbe7..d91580d4 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmanalysis/RankServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.crm.service.crmanalysis; import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.ContractVO; +import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.TimeQueryVO; import cn.iocoder.yudao.module.crm.dal.mysql.crmcontract.CrmContractMapper; import cn.iocoder.yudao.module.crm.dal.mysql.crmcontractreceivables.CrmContractReceivablesMapper; import org.springframework.stereotype.Service; @@ -25,12 +26,12 @@ public class RankServiceImpl implements RankService { @Override - public List getContractRank() { - return contractMapper.selectContractTop(); + public List getContractRank(TimeQueryVO vo) { + return contractMapper.selectContractTop(vo); } @Override - public List getReceivablesRank() { - return contractReceivablesMapper.selectReceivablesTop(); + public List getReceivablesRank(TimeQueryVO vo) { + return contractReceivablesMapper.selectReceivablesTop(vo); } } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmcustomer/CrmCustomerServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmcustomer/CrmCustomerServiceImpl.java index a4b742af..2edefc9a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmcustomer/CrmCustomerServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/crmcustomer/CrmCustomerServiceImpl.java @@ -126,7 +126,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { && CollUtil.isNotEmpty(repeatOwnerUserNameList) && updateReqVO.getRepeatConfirmationFlag() == 0) { List items = repeatOwnerUserNameList.stream().distinct().collect(Collectors.toList()); - throw exception(new ErrorCode(200012, "该客户已被:" + String.join(",", items) + "添加过,是否继续添加?")); } + throw exception(new ErrorCode(200012, "该客户已被:" + String.join(",", items) + "添加过,是否继续添加?")); + } // 更新 CrmCustomerDO updateObj = BeanUtils.toBean(updateReqVO, CrmCustomerDO.class); @@ -260,10 +261,10 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { return PageResult.empty(); } IPage pageResult; + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); if (pageReqVO.getDistinctFlag() == 0) { - return customerMapper.selectPage(pageReqVO, ids); + pageResult = customerMapper.selectPage(mpPage, pageReqVO, ids); } else { - IPage mpPage = MyBatisUtils.buildPage(pageReqVO); pageResult = customerMapper.selectPageList(mpPage, pageReqVO, ids); } return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontract/CrmContractMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontract/CrmContractMapper.xml index 32036891..f71187ec 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontract/CrmContractMapper.xml +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontract/CrmContractMapper.xml @@ -75,6 +75,14 @@ t.deleted = 0 AND t.result = 2 AND t.contract_type = 1 + + + and t.signing_date >= #{vo.times[0]} + + + and t.signing_date <= #{vo.times[1]} + + GROUP BY t.user_id ORDER BY diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontractreceivables/CrmContractReceivablesMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontractreceivables/CrmContractReceivablesMapper.xml index 2653a1a8..e6ec467a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontractreceivables/CrmContractReceivablesMapper.xml +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcontractreceivables/CrmContractReceivablesMapper.xml @@ -69,6 +69,14 @@ WHERE t.deleted = 0 AND t.result = 2 + + + and t.return_time >= #{vo.times[0]} + + + and t.return_time <= #{vo.times[1]} + + GROUP BY t.user_id ORDER BY diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcustomer/CrmCustomerMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcustomer/CrmCustomerMapper.xml index d017ec19..90bf8c75 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcustomer/CrmCustomerMapper.xml +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmcustomer/CrmCustomerMapper.xml @@ -135,4 +135,57 @@ and t1.deleted = 0 and a.name = #{name} + From 39a13a84e93565755094b0ce02729e5b31eb3cd8 Mon Sep 17 00:00:00 2001 From: aikai Date: Fri, 21 Mar 2025 15:25:29 +0800 Subject: [PATCH 4/8] =?UTF-8?q?refactor(system):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=80=83=E5=8B=A4=E7=9B=B8=E5=85=B3=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重命名变量以提高代码可读性 - 使用 LambdaQueryWrapper 替代复杂的手写 SQL 查询 - 优化提醒任务中的数据处理逻辑 - 采用更高效的批量更新方式 --- .../job/attendance/AttendanceMissingCardJob.java | 4 ++-- .../module/system/job/attendance/RemindJob.java | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceMissingCardJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceMissingCardJob.java index 1f412abf..d430453f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceMissingCardJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceMissingCardJob.java @@ -33,14 +33,14 @@ public class AttendanceMissingCardJob { LocalDateTime now = LocalDateTime.now(); String time = now.format(Constants.REPO_DATE_FORMAT); String yesterdayStr = LocalDateTimeUtil.offset(now, -1, ChronoUnit.DAYS).format(Constants.REPO_DATE_FORMAT); - LambdaQueryWrapper le = new LambdaQueryWrapper() + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() .in(AttendancePunchRecordDO::getDayTime, Arrays.asList(time, yesterdayStr)) .eq(AttendancePunchRecordDO::getNextDayFlag, Constants.TRUE) .eq(AttendancePunchRecordDO::getStatus, AttendanceOnTheDayDTO.PUNCH_STATUS_UN_PUNCH) .le(AttendancePunchRecordDO::getLatestPunchTime, now); AttendancePunchRecordDO attendancePunchRecordDO = new AttendancePunchRecordDO(); attendancePunchRecordDO.setStatus(AttendanceOnTheDayDTO.PUNCH_STATUS_MISS).setNextDayFlag(Constants.FALSE); - attendancePunchRecordMapper.update(attendancePunchRecordDO, le); + attendancePunchRecordMapper.update(attendancePunchRecordDO, lambdaQueryWrapper); log.info("结束 修改考勤缺卡"); // 返回执行成功 return ReturnT.SUCCESS; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java index 4817fd88..c55440eb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendanceP import cn.iocoder.yudao.module.system.service.auth.AdminOauthUserOtherInfoService; import cn.iocoder.yudao.module.system.service.auth.dto.AdminOauthUserOtherInfoDTO; import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; @@ -30,6 +31,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Component @Slf4j @@ -59,10 +61,8 @@ public class RemindJob { //还有10分钟就要上班了,别忘记打卡哦~ //幸苦一天了,研发部全体人员提醒您,记得打卡哦~ - Map map = new HashMap<>(); //打卡时间 - 15分钟之后是否是 大于打卡时间 - 是的话 - 把用户id拿出来 组装好消息发送 - List editList = new ArrayList<>(); for (AttendancePunchRecordDO attendancePunchRecordDO : attendancePunchRecordDOS) { if (attendancePunchRecordDO.getWorkType().equals(Constants.ZERO) && futureTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { AttendanceWorkDTO dto = new AttendanceWorkDTO(); @@ -70,15 +70,11 @@ public class RemindJob { dto.setData(String.format("还有%s钟就要上班了,别忘记打卡哦~", DateUtil.formatBetween(LocalDateTimeUtil.between(localDateTime, attendancePunchRecordDO.getShouldPunchTime()).toMillis(), BetweenFormatter.Level.MINUTE))); map.put(attendancePunchRecordDO.getUserId(), dto); - attendancePunchRecordDO.setRemindFlag(Constants.TRUE); - editList.add(attendancePunchRecordDO); } else if (attendancePunchRecordDO.getWorkType().equals(Constants.ONE) && localDateTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { AttendanceWorkDTO dto = new AttendanceWorkDTO(); dto.setWorkTypeStr("下班打卡"); dto.setData("工作幸苦了,记得打卡哦~"); map.put(attendancePunchRecordDO.getUserId(), dto); - attendancePunchRecordDO.setRemindFlag(Constants.TRUE); - editList.add(attendancePunchRecordDO); } } //获取到所有的用户id @@ -107,8 +103,11 @@ public class RemindJob { subscribeMessageSendApi.sendMaMsg(dto); } } - if (CollectionUtil.isNotEmpty(editList)) { - attendancePunchRecordService.batchUpdate(editList); + List ids = attendancePunchRecordDOS.stream().map(AttendancePunchRecordDO::getId).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(ids)) { + attendancePunchRecordService.update(new AttendancePunchRecordDO().setRemindFlag(Constants.TRUE), + new LambdaQueryWrapper() + .in(AttendancePunchRecordDO::getId, ids)); } // 返回执行成功 return ReturnT.SUCCESS; From 37168b4ae9add5dd272d77db3aa4544b2687687a Mon Sep 17 00:00:00 2001 From: aikai Date: Mon, 24 Mar 2025 09:42:07 +0800 Subject: [PATCH 5/8] =?UTF-8?q?feat(system):=20=E8=AF=B7=E5=81=87=E5=88=86?= =?UTF-8?q?=E7=BB=84=E7=94=A8=E6=88=B7=E6=96=B0=E5=A2=9E=E6=88=96=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=B6=E6=94=AF=E6=8C=81=E8=B0=83=E7=94=A8=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=8E=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 HolidayWorkingAgeService 依赖 - 在处理请假设置时,增加工作日历信息的查询和传递 --- .../groupuser/AttendanceGroupUserServiceImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupuser/AttendanceGroupUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupuser/AttendanceGroupUserServiceImpl.java index c0f5f177..31b4daa7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupuser/AttendanceGroupUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupuser/AttendanceGroupUserServiceImpl.java @@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.Attend import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaysetting.HolidaySettingDO; import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaysettingrange.HolidaySettingRangeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidayworkingage.HolidayWorkingAgeDO; import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupuser.AttendanceGroupUserMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord.AttendancePunchRecordMapper; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; @@ -21,6 +22,7 @@ import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendanceP import cn.iocoder.yudao.module.system.service.holiday.holidaysetting.HolidaySettingService; import cn.iocoder.yudao.module.system.service.holiday.holidaysettingrange.HolidaySettingRangeService; import cn.iocoder.yudao.module.system.service.holiday.holidayuserrecord.HolidayUserRecordService; +import cn.iocoder.yudao.module.system.service.holiday.holidayworkingage.HolidayWorkingAgeService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; @@ -63,6 +65,8 @@ public class AttendanceGroupUserServiceImpl implements AttendanceGroupUserServic @Resource @Lazy private HolidaySettingService holidaySettingService; + @Resource + private HolidayWorkingAgeService holidayWorkingAgeService; @Override public AttendanceGroupUserCreateOrDelVO createOrDel(Long attendanceGroupId, List userIds) { @@ -97,11 +101,14 @@ public class AttendanceGroupUserServiceImpl implements AttendanceGroupUserServic List holidaySettingIds = holidaySettingRangeService.getHolidaySettingIdsByGroupId(attendanceGroupId); if (CollUtil.isNotEmpty(holidaySettingIds)) { + List holidayWorkingAgeDOS = holidayWorkingAgeService.selectBySettingIds(holidaySettingIds); + Map> holidayWorkingAgeDOMap = holidayWorkingAgeDOS.stream().collect(Collectors.groupingBy(HolidayWorkingAgeDO::getHolidaySettingId, Collectors.toList())); + List holidaySettings = holidaySettingService.getHolidaySettingByIds(holidaySettingIds); Map holidaySettingMap = holidaySettings.stream().collect(Collectors.toMap(HolidaySettingDO::getId, holidaySettingDO -> holidaySettingDO)); for (HolidaySettingDO holidaySetting : holidaySettings) { holidayUserRecordService.grant(holidaySetting, - items, holidaySettingMap.get(holidaySetting.getId()).getHolidayBalanceSettingDO(), ListUtil.empty(), true); + items, holidaySettingMap.get(holidaySetting.getId()).getHolidayBalanceSettingDO(), holidayWorkingAgeDOMap.get(holidaySetting.getId()), true); } } } From 201c0e3c02b8795800a6d5434576ac26612a29f7 Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 25 Mar 2025 09:28:45 +0800 Subject: [PATCH 6/8] =?UTF-8?q?refactor(system):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=89=93=E5=8D=A1=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 editIdsList 用于存储需要更新提醒状态的打卡记录 ID - 只有需要提醒的打卡记录才会被添加到 editIdsList 中 - 修改更新提醒状态的逻辑,仅针对实际需要提醒的记录进行更新 --- .../yudao/module/system/job/attendance/RemindJob.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java index c55440eb..2ad9ffc8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/RemindJob.java @@ -63,6 +63,7 @@ public class RemindJob { //幸苦一天了,研发部全体人员提醒您,记得打卡哦~ Map map = new HashMap<>(); //打卡时间 - 15分钟之后是否是 大于打卡时间 - 是的话 - 把用户id拿出来 组装好消息发送 + List editIdsList = new ArrayList<>(); for (AttendancePunchRecordDO attendancePunchRecordDO : attendancePunchRecordDOS) { if (attendancePunchRecordDO.getWorkType().equals(Constants.ZERO) && futureTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { AttendanceWorkDTO dto = new AttendanceWorkDTO(); @@ -70,11 +71,13 @@ public class RemindJob { dto.setData(String.format("还有%s钟就要上班了,别忘记打卡哦~", DateUtil.formatBetween(LocalDateTimeUtil.between(localDateTime, attendancePunchRecordDO.getShouldPunchTime()).toMillis(), BetweenFormatter.Level.MINUTE))); map.put(attendancePunchRecordDO.getUserId(), dto); + editIdsList.add(attendancePunchRecordDO.getId()); } else if (attendancePunchRecordDO.getWorkType().equals(Constants.ONE) && localDateTime.isAfter(attendancePunchRecordDO.getShouldPunchTime())) { AttendanceWorkDTO dto = new AttendanceWorkDTO(); dto.setWorkTypeStr("下班打卡"); dto.setData("工作幸苦了,记得打卡哦~"); map.put(attendancePunchRecordDO.getUserId(), dto); + editIdsList.add(attendancePunchRecordDO.getId()); } } //获取到所有的用户id @@ -103,11 +106,10 @@ public class RemindJob { subscribeMessageSendApi.sendMaMsg(dto); } } - List ids = attendancePunchRecordDOS.stream().map(AttendancePunchRecordDO::getId).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(ids)) { + if (CollectionUtil.isNotEmpty(editIdsList)) { attendancePunchRecordService.update(new AttendancePunchRecordDO().setRemindFlag(Constants.TRUE), new LambdaQueryWrapper() - .in(AttendancePunchRecordDO::getId, ids)); + .in(AttendancePunchRecordDO::getId, editIdsList)); } // 返回执行成功 return ReturnT.SUCCESS; From ab7111cae3c17c7c0174e178aef9d070cdfebc41 Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 25 Mar 2025 16:35:42 +0800 Subject: [PATCH 7/8] =?UTF-8?q?refactor(smartfactory):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=B7=A5=E5=8E=82=E4=BF=A1=E6=81=AF=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=99=A8=E5=92=8C=E6=9C=8D=20=E5=8A=A1=E7=B1=BB=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了 SfFactoryInfoController 中的冗余空行 - 优化了 SfFactoryInfoService 接口的导入信息 - 移除了 SfFactoryInfoServiceImpl 中的冗余空行 --- .../controller/admin/factory/SfFactoryInfoController.java | 2 +- .../smartfactory/service/factory/SfFactoryInfoService.java | 7 +++---- .../service/factory/SfFactoryInfoServiceImpl.java | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/SfFactoryInfoController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/SfFactoryInfoController.java index b2cfc3ba..2a114d34 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/SfFactoryInfoController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/SfFactoryInfoController.java @@ -90,4 +90,4 @@ public class SfFactoryInfoController { BeanUtils.toBean(list, SfFactoryInfoRespVO.class)); } -} \ No newline at end of file +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoService.java index 413ab530..dcbfe3a1 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoService.java @@ -1,13 +1,12 @@ package cn.iocoder.yudao.module.smartfactory.service.factory; -import java.util.*; -import javax.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.module.smartfactory.controller.admin.factory.vo.SfFactoryInfoPageReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factory.vo.SfFactoryInfoSaveReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factory.SfFactoryInfoDO; +import javax.validation.Valid; + /** * 工厂信息 Service 接口 * @@ -53,4 +52,4 @@ public interface SfFactoryInfoService { */ PageResult getSfFactoryInfoPage(SfFactoryInfoPageReqVO pageReqVO); -} \ No newline at end of file +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoServiceImpl.java index 9b5df67b..e8f95205 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factory/SfFactoryInfoServiceImpl.java @@ -56,4 +56,4 @@ public class SfFactoryInfoServiceImpl implements SfFactoryInfoService { return sfFactoryInfoMapper.selectPage(pageReqVO); } -} \ No newline at end of file +} From 34d4078199222e075c17332c11f3735c2487198d Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 25 Mar 2025 16:36:29 +0800 Subject: [PATCH 8/8] =?UTF-8?q?feat(smartfactory):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=90=AC=E8=BF=90=E7=BB=84=E5=B7=A5=E8=B5=84=E8=A7=84=E6=A0=BC?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=92=8C=E6=AF=8F=E6=97=A5=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增搬运组工资规格关联相关的数据结构和接口 - 新增每日个人工资记录相关的数据结构和接口 - 实现搬运组工资规格关联和每日个人工资记录的 CRUD 操作- 添加工厂搬运规格相关的数据结构和接口 - 实现工厂搬运规格的 CRUD 操作 -优化员工相关接口,增加获取当前登录用户所属工厂的功能 --- .../common/template/WxMpMsgTemplateUtils.java | 43 +++++++ .../dto/StaffCertificateInformationDTO.java | 24 ++++ .../crmcontract/CrmContractController.java | 5 - .../enums/ErrorCodeConstants.java | 4 + ...ngGroupAmountSpecificationsController.java | 86 +++++++++++++ ...ingGroupAmountSpecificationsPageReqVO.java | 37 ++++++ ...ndlingGroupAmountSpecificationsRespVO.java | 44 +++++++ ...ingGroupAmountSpecificationsSaveReqVO.java | 27 ++++ .../HandlingGroupUserAmountController.java | 104 +++++++++++++++ .../dto/StaffWagesPageDTO.java | 30 +++++ .../vo/HandlingGroupUserAmountPageReqVO.java | 35 +++++ .../vo/HandlingGroupUserAmountRespVO.java | 45 +++++++ .../vo/HandlingGroupUserAmountSaveReqVO.java | 29 +++++ .../vo/StaffWagesPageVO.java | 22 ++++ .../HandlingSpecificationsController.java | 102 +++++++++++++++ .../vo/HandlingSpecificationsPageReqVO.java | 23 ++++ .../vo/HandlingSpecificationsRespVO.java | 53 ++++++++ .../vo/HandlingSpecificationsSaveReqVO.java | 39 ++++++ .../admin/staff/StaffController.java | 21 ++- ...StaffCertificateInformationController.java | 102 +++++++++++++++ .../StaffCertificateInformationPageReqVO.java | 41 ++++++ .../vo/StaffCertificateInformationRespVO.java | 52 ++++++++ .../StaffCertificateInformationSaveReqVO.java | 39 ++++++ .../HandlingGroupAmountSpecificationsDO.java | 54 ++++++++ .../HandlingGroupUserAmountDO.java | 56 ++++++++ .../HandlingSpecificationsDO.java | 62 +++++++++ .../StaffCertificateInformationDO.java | 68 ++++++++++ ...ndlingGroupAmountSpecificationsMapper.java | 47 +++++++ .../HandlingGroupUserAmountMapper.java | 48 +++++++ .../HandlingSpecificationsMapper.java | 47 +++++++ .../StaffCertificateInformationMapper.java | 49 +++++++ .../StaffCertificateInformationJob.java | 121 ++++++++++++++++++ .../rpc/config/RpcConfiguration.java | 3 +- ...dlingGroupAmountSpecificationsService.java | 61 +++++++++ ...gGroupAmountSpecificationsServiceImpl.java | 93 ++++++++++++++ .../HandlingGroupUserAmountService.java | 71 ++++++++++ .../HandlingGroupUserAmountServiceImpl.java | 79 ++++++++++++ .../HandlingSpecificationsService.java | 64 +++++++++ .../HandlingSpecificationsServiceImpl.java | 69 ++++++++++ .../service/staff/StaffService.java | 29 ++++- .../service/staff/StaffServiceImpl.java | 36 ++++++ .../StaffCertificateInformationService.java | 63 +++++++++ ...taffCertificateInformationServiceImpl.java | 77 +++++++++++ ...andlingGroupAmountSpecificationsMapper.xml | 41 ++++++ .../HandlingGroupUserAmountMapper.xml | 74 +++++++++++ .../HandlingSpecificationsMapper.xml | 54 ++++++++ .../StaffCertificateInformationMapper.xml | 50 ++++++++ 47 files changed, 2411 insertions(+), 12 deletions(-) create mode 100644 yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/dto/StaffCertificateInformationDTO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsPageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/HandlingGroupUserAmountController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/dto/StaffWagesPageDTO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountPageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/StaffWagesPageVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/HandlingSpecificationsController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsPageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/StaffCertificateInformationController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationPageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupuseramount/HandlingGroupUserAmountDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlingspecifications/HandlingSpecificationsDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staffcertificateinformation/StaffCertificateInformationDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupuseramount/HandlingGroupUserAmountMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlingspecifications/HandlingSpecificationsMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffcertificateinformation/StaffCertificateInformationMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/job/staffCertificateInformation/StaffCertificateInformationJob.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.xml create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupuseramount/HandlingGroupUserAmountMapper.xml create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlingspecifications/HandlingSpecificationsMapper.xml create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffcertificateinformation/StaffCertificateInformationMapper.xml diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/WxMpMsgTemplateUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/WxMpMsgTemplateUtils.java index 1372b487..00a6e86e 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/WxMpMsgTemplateUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/WxMpMsgTemplateUtils.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.enums.SocialTypeEnum; import cn.iocoder.yudao.framework.common.template.dto.ApprovalResultNotificationMessageDTO; import cn.iocoder.yudao.framework.common.template.dto.PerformanceResultConfirmationReminderDTO; import cn.iocoder.yudao.framework.common.template.dto.ProcessToDoReminderDTO; +import cn.iocoder.yudao.framework.common.template.dto.StaffCertificateInformationDTO; import cn.iocoder.yudao.framework.common.template.vo.MsgData; import cn.iocoder.yudao.framework.common.template.vo.SubscribeMessageReqDTO; import cn.iocoder.yudao.framework.common.util.date.DateUtils; @@ -149,4 +150,46 @@ public class WxMpMsgTemplateUtils { return message; } + + /** + * 叉车年检过期提醒 + * + * @param dto + * @return + */ + public SubscribeMessageReqDTO forkliftAnnualInspectionExpiredReminder(StaffCertificateInformationDTO dto) { + SubscribeMessageReqDTO message = new SubscribeMessageReqDTO(); + message.setToUser(dto.getOpenId()); + message.setTemplateId(PERFORMANCE_RESULT_CONFIRMATION_REMINDER); + //证件类型 + MsgData certificateName = new MsgData(); + certificateName.setName("thing1"); + certificateName.setValue(dto.getCertificateName()); + message.addData(certificateName); + + //到期时间 + MsgData time = new MsgData(); + time.setName("time2"); + time.setValue(dto.getTime()); + message.addData(time); + + //姓名 + MsgData name = new MsgData(); + name.setName("thing4"); + name.setValue(dto.getTime()); + message.addData(name); + + //备注 + MsgData remarks = new MsgData(); + remarks.setName("thing3"); + remarks.setValue(dto.getTime()); + message.addData(remarks); + + message.setJumpWxMaFlag(false); +// message.setMiniProgramState(dto.getMiniProgramState()); +// message.setPage(dto.getPage()); + message.setSocialType(SocialTypeEnum.WECHAT_MINI_APP.getType()); + return message; + } + } diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/dto/StaffCertificateInformationDTO.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/dto/StaffCertificateInformationDTO.java new file mode 100644 index 00000000..6114c499 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/template/dto/StaffCertificateInformationDTO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.framework.common.template.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class StaffCertificateInformationDTO { + @Schema(description = "接收者(用户)的 openid") + private String openId; + @Schema(description = "工人名称") + private String userName; + @Schema(description = "证书名称") + private String certificateName; + @Schema(description = "到期时间") + private String time; + @Schema(description = "备注") + private String remarks; + @Schema(description = "跳转小程序类型") + private String miniProgramState = "formal"; + @Schema(description = "小程序页面地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "pages/home/index") + private String page; +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmcontract/CrmContractController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmcontract/CrmContractController.java index 10a1e704..d8da6d5e 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmcontract/CrmContractController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/crmcontract/CrmContractController.java @@ -91,9 +91,4 @@ public class CrmContractController { contractService.check(checkInfoVO); return success(true); } - - - - - } diff --git a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java index 54728042..e809fdb0 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java +++ b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java @@ -36,4 +36,8 @@ public interface ErrorCodeConstants { ErrorCode STAFF_SALARY_NOT_EXISTS = new ErrorCode(1_000_004_001, "工资记录不存在!"); ErrorCode INDUSTRIAL_INJURY_NOT_EXISTS = new ErrorCode(1_000_004_002, "工伤记录不存在!"); ErrorCode STAFF_SALARY_EXISTS = new ErrorCode(1_000_004_003, "工资记录已存在"); + // ========== 搬运模块 1_000_005_000 ========== + ErrorCode CANNOT_FIND_THE_CORRESPONDING_FACTORY_HANDLING_SPECIFICATION = new ErrorCode(1_000_005_001, "找不到对应的工厂搬运规格"); + + } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsController.java new file mode 100644 index 00000000..c71343e9 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsController.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.service.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 搬运组工资规格关联") +@RestController +@RequestMapping("/smartfactory/handling-group-amount-specifications") +@Validated +public class HandlingGroupAmountSpecificationsController { + + @Resource + private HandlingGroupAmountSpecificationsService handlingGroupAmountSpecificationsService; + + @PostMapping("/createOrEdit") + @Operation(summary = "创建搬运组工资规格关联") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-amount-specifications:create')") + public CommonResult createOrEdit(@Valid @RequestBody HandlingGroupAmountSpecificationsSaveReqVO createReqVO) { + handlingGroupAmountSpecificationsService.createOrEdit(createReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除搬运组工资规格关联") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-amount-specifications:delete')") + public CommonResult deleteHandlingGroupAmountSpecifications(@RequestParam("id") Long id) { + handlingGroupAmountSpecificationsService.deleteHandlingGroupAmountSpecifications(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得搬运组工资规格关联") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-amount-specifications:query')") + public CommonResult getHandlingGroupAmountSpecifications(@RequestParam("id") Long id) { + HandlingGroupAmountSpecificationsDO handlingGroupAmountSpecifications = handlingGroupAmountSpecificationsService.getHandlingGroupAmountSpecifications(id); + return success(BeanUtils.toBean(handlingGroupAmountSpecifications, HandlingGroupAmountSpecificationsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得搬运组工资规格关联分页") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-amount-specifications:query')") + public CommonResult> getHandlingGroupAmountSpecificationsPage(@Valid HandlingGroupAmountSpecificationsPageReqVO pageReqVO) { + PageResult pageResult = handlingGroupAmountSpecificationsService.getHandlingGroupAmountSpecificationsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, HandlingGroupAmountSpecificationsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出搬运组工资规格关联 Excel") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-amount-specifications:export')") + @OperateLog(type = EXPORT) + public void exportHandlingGroupAmountSpecificationsExcel(@Valid HandlingGroupAmountSpecificationsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = handlingGroupAmountSpecificationsService.getHandlingGroupAmountSpecificationsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "搬运组工资规格关联.xls", "数据", HandlingGroupAmountSpecificationsRespVO.class, + BeanUtils.toBean(list, HandlingGroupAmountSpecificationsRespVO.class)); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsPageReqVO.java new file mode 100644 index 00000000..69731c78 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 搬运组工资规格关联分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class HandlingGroupAmountSpecificationsPageReqVO extends PageParam { + + @Schema(description = "搬运规格id", example = "23178") + private Long handlingSpecificationsId; + + @Schema(description = "数量", example = "15611") + private Integer totalCount; + + @Schema(description = "日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "总金额(根据规格和总量计算出 该搬运组获得的总金额)") + private BigDecimal amount; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsRespVO.java new file mode 100644 index 00000000..ce3991e0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsRespVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 搬运组工资规格关联 Response VO") +@Data +@ExcelIgnoreUnannotated +public class HandlingGroupAmountSpecificationsRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9721") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "搬运规格id", example = "23178") + @ExcelProperty("搬运规格id") + private Long handlingSpecificationsId; + + @Schema(description = "搬运规格名称", example = "23178") + @ExcelProperty("搬运规格名称") + private String handlingSpecificationsName; + + @Schema(description = "数量", example = "15611") + @ExcelProperty("数量") + private Integer totalCount; + + @Schema(description = "日期 格式 yyyy-MM-dd") + @ExcelProperty("日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "总金额(根据规格和总量计算出 该搬运组获得的总金额)") + @ExcelProperty("总金额(根据规格和总量计算出 该搬运组获得的总金额)") + private BigDecimal amount; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsSaveReqVO.java new file mode 100644 index 00000000..6fb442c0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupamountspecifications/vo/HandlingGroupAmountSpecificationsSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 搬运组工资规格关联新增/修改 Request VO") +@Data +public class HandlingGroupAmountSpecificationsSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9721") + private Long id; + + @Schema(description = "搬运规格id", example = "23178") + @NotNull(message = "搬运规格不能为空") + private Long handlingSpecificationsId; + + @Schema(description = "数量", example = "15611") + @NotNull(message = "数量不能为空") + private Integer totalCount; + + @Schema(description = "日期 格式 yyyy-MM-dd") + @NotNull(message = "日期不能为空") + private String dateStr; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/HandlingGroupUserAmountController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/HandlingGroupUserAmountController.java new file mode 100644 index 00000000..b2b2d113 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/HandlingGroupUserAmountController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount; + +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.dto.StaffWagesPageDTO; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.*; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO; +import cn.iocoder.yudao.module.smartfactory.service.handlinggroupuseramount.HandlingGroupUserAmountService; + +@Tag(name = "管理后台 - 搬运组每日个人工资记录") +@RestController +@RequestMapping("/smartfactory/handling-group-user-amount") +@Validated +public class HandlingGroupUserAmountController { + + @Resource + private HandlingGroupUserAmountService handlingGroupUserAmountService; + + @PostMapping("/createOrEdit") + @Operation(summary = "创建搬运组每日个人工资记录") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:create')") + public CommonResult createOrEdit(@Valid @RequestBody HandlingGroupUserAmountSaveReqVO createReqVO) { + handlingGroupUserAmountService.createOrEdit(createReqVO); + return success(true); + } + + @PutMapping("/update") + @Operation(summary = "更新搬运组每日个人工资记录") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:update')") + public CommonResult updateHandlingGroupUserAmount(@Valid @RequestBody HandlingGroupUserAmountSaveReqVO updateReqVO) { + handlingGroupUserAmountService.updateHandlingGroupUserAmount(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除搬运组每日个人工资记录") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:delete')") + public CommonResult deleteHandlingGroupUserAmount(@RequestParam("id") Long id) { + handlingGroupUserAmountService.deleteHandlingGroupUserAmount(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得搬运组每日个人工资记录") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:query')") + public CommonResult getHandlingGroupUserAmount(@RequestParam("id") Long id) { + HandlingGroupUserAmountDO handlingGroupUserAmount = handlingGroupUserAmountService.getHandlingGroupUserAmount(id); + return success(BeanUtils.toBean(handlingGroupUserAmount, HandlingGroupUserAmountRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得搬运组每日个人工资记录分页") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:query')") + public CommonResult> getHandlingGroupUserAmountPage(@Valid HandlingGroupUserAmountPageReqVO pageReqVO) { + PageResult pageResult = handlingGroupUserAmountService.getHandlingGroupUserAmountPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, HandlingGroupUserAmountRespVO.class)); + } + + @GetMapping("/staffWagesPage") + @Operation(summary = "以用户分组工资分页列表") + public CommonResult> staffWagesPage(@Valid StaffWagesPageDTO dto) { + PageResult pageResult = handlingGroupUserAmountService.staffWagesPage(dto); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出搬运组每日个人工资记录 Excel") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-group-user-amount:export')") + @OperateLog(type = EXPORT) + public void exportHandlingGroupUserAmountExcel(@Valid HandlingGroupUserAmountPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = handlingGroupUserAmountService.getHandlingGroupUserAmountPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "搬运组每日个人工资记录.xls", "数据", HandlingGroupUserAmountRespVO.class, + BeanUtils.toBean(list, HandlingGroupUserAmountRespVO.class)); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/dto/StaffWagesPageDTO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/dto/StaffWagesPageDTO.java new file mode 100644 index 00000000..8acf81ec --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/dto/StaffWagesPageDTO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.dto; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Data +public class StaffWagesPageDTO extends PageParam { + + @Schema(description = "用户id", example = "12639") + private Long userId; + + @Schema(description = "工厂id", example = "12639") + private Long factoryId; + + @Schema(description = "搬运组工资规格关联id", example = "27617") + private Long handlingGroupAmountSpecificationsId; + + @Schema(description = "日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountPageReqVO.java new file mode 100644 index 00000000..4b623c32 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountPageReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 搬运组每日个人工资记录分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class HandlingGroupUserAmountPageReqVO extends PageParam { + + @Schema(description = "用户id", example = "12639") + private Long userId; + + @Schema(description = "搬运组工资规格关联id", example = "27617") + private Long handlingGroupAmountSpecificationsId; + + @Schema(description = "日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "搬运组每日个人工资") + private BigDecimal amount; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountRespVO.java new file mode 100644 index 00000000..b0643c52 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountRespVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 搬运组每日个人工资记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class HandlingGroupUserAmountRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17728") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "用户id", example = "12639") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "用户名称", example = "12639") + @ExcelProperty("用户名称") + private String userName; + + @Schema(description = "搬运组工资规格关联id", example = "27617") + @ExcelProperty("搬运组工资规格关联id") + private Long handlingGroupAmountSpecificationsId; + + @Schema(description = "日期 格式 yyyy-MM-dd") + @ExcelProperty("日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "搬运组每日个人工资") + @ExcelProperty("搬运组每日个人工资") + private BigDecimal amount; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountSaveReqVO.java new file mode 100644 index 00000000..a39fb6d1 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/HandlingGroupUserAmountSaveReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 搬运组每日个人工资记录新增/修改 Request VO") +@Data +public class HandlingGroupUserAmountSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17728") + private Long id; + + @Schema(description = "用户id", example = "12639") + private Long userId; + + @Schema(description = "搬运组工资规格关联id", example = "27617") + private Long handlingGroupAmountSpecificationsId; + + @Schema(description = "日期 格式 yyyy-MM-dd") + private String dateStr; + + @Schema(description = "搬运组每日个人工资") + private BigDecimal amount; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/StaffWagesPageVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/StaffWagesPageVO.java new file mode 100644 index 00000000..c21bb2d9 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlinggroupuseramount/vo/StaffWagesPageVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StaffWagesPageVO { + @Schema(description = "用户id", example = "12639") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "用户名称", example = "12639") + @ExcelProperty("用户名称") + private String userName; + + @Schema(description = "总工资") + @ExcelProperty("总工资") + private BigDecimal totalAmount; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/HandlingSpecificationsController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/HandlingSpecificationsController.java new file mode 100644 index 00000000..8e8f88d0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/HandlingSpecificationsController.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.*; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.service.handlingspecifications.HandlingSpecificationsService; + +@Tag(name = "管理后台 - 工厂搬运规格") +@RestController +@RequestMapping("/smartfactory/handling-specifications") +@Validated +public class HandlingSpecificationsController { + + @Resource + private HandlingSpecificationsService handlingSpecificationsService; + + @PostMapping("/create") + @Operation(summary = "创建工厂搬运规格") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:create')") + public CommonResult createHandlingSpecifications(@Valid @RequestBody HandlingSpecificationsSaveReqVO createReqVO) { + return success(handlingSpecificationsService.createHandlingSpecifications(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工厂搬运规格") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:update')") + public CommonResult updateHandlingSpecifications(@Valid @RequestBody HandlingSpecificationsSaveReqVO updateReqVO) { + handlingSpecificationsService.updateHandlingSpecifications(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工厂搬运规格") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:delete')") + public CommonResult deleteHandlingSpecifications(@RequestParam("id") Long id) { + handlingSpecificationsService.deleteHandlingSpecifications(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工厂搬运规格") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:query')") + public CommonResult getHandlingSpecifications(@RequestParam("id") Long id) { + HandlingSpecificationsDO handlingSpecifications = handlingSpecificationsService.getHandlingSpecifications(id); + return success(BeanUtils.toBean(handlingSpecifications, HandlingSpecificationsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工厂搬运规格分页") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:query')") + public CommonResult> getHandlingSpecificationsPage(@Valid HandlingSpecificationsPageReqVO pageReqVO) { + PageResult pageResult = handlingSpecificationsService.getHandlingSpecificationsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, HandlingSpecificationsRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得工厂搬运规格列表") + public CommonResult> getHandlingSpecificationsList(@Valid HandlingSpecificationsPageReqVO pageReqVO) { + List list = handlingSpecificationsService.getHandlingSpecificationsList(pageReqVO); + return success(BeanUtils.toBean(list, HandlingSpecificationsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工厂搬运规格 Excel") + @PreAuthorize("@ss.hasPermission('smartfactory:handling-specifications:export')") + @OperateLog(type = EXPORT) + public void exportHandlingSpecificationsExcel(@Valid HandlingSpecificationsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = handlingSpecificationsService.getHandlingSpecificationsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工厂搬运规格.xls", "数据", HandlingSpecificationsRespVO.class, + BeanUtils.toBean(list, HandlingSpecificationsRespVO.class)); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsPageReqVO.java new file mode 100644 index 00000000..371beeb0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsPageReqVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 工厂搬运规格分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class HandlingSpecificationsPageReqVO extends PageParam { + + @Schema(description = "工厂id", example = "9106") + private Long factoryId; + + @Schema(description = "规格名称", example = "张三") + private String specificationsName; + + @Schema(description = "类型 0数量 1重量 默认数量", example = "1") + private Integer type; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsRespVO.java new file mode 100644 index 00000000..e34f480c --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsRespVO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 工厂搬运规格 Response VO") +@Data +@ExcelIgnoreUnannotated +public class HandlingSpecificationsRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26164") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9106") + @ExcelProperty("工厂id") + private Long factoryId; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "9106") + @ExcelProperty("工厂名称") + private String factoryName; + + @Schema(description = "规格名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("规格名称") + private String specificationsName; + + @Schema(description = "类型 0数量 1重量 默认数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("类型 0数量 1重量 默认数量") + private Integer type; + + @Schema(description = "重量 /(公斤 kg)") + @ExcelProperty("重量 /(公斤 kg)") + private BigDecimal weight; + + @Schema(description = "数量") + @ExcelProperty("数量") + private Integer num; + + @Schema(description = "单价/(吨/1000 or 件) ", requiredMode = Schema.RequiredMode.REQUIRED, example = "18521") + @ExcelProperty("单价/(吨/1000 or 件) ") + private BigDecimal unitPrice; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsSaveReqVO.java new file mode 100644 index 00000000..9b194878 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/handlingspecifications/vo/HandlingSpecificationsSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 工厂搬运规格新增/修改 Request VO") +@Data +public class HandlingSpecificationsSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26164") + private Long id; + + @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9106") + @NotNull(message = "工厂id不能为空") + private Long factoryId; + + @Schema(description = "规格名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "规格名称不能为空") + private String specificationsName; + + @Schema(description = "类型 0数量 1重量 默认数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "类型 0数量 1重量 默认数量不能为空") + private Integer type; + + @Schema(description = "重量 /(公斤 kg)") + private BigDecimal weight; + + @Schema(description = "数量") + private Integer num; + + @Schema(description = "单价/(吨/1000 or 件) ", requiredMode = Schema.RequiredMode.REQUIRED, example = "18521") + @NotNull(message = "单价/(吨/1000 or 件) 不能为空") + private BigDecimal unitPrice; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java index 2e50bc68..157d42f7 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staff/StaffController.java @@ -60,6 +60,12 @@ public class StaffController { return success(staffService.createStaff(createReqVO)); } + @GetMapping("/getTheFactoryOfTheCurrentlyLoggedInUser") + @Operation(summary = "获取当前登录用户所属工厂Id(为null就是不属于任何工厂)") + public CommonResult getTheFactoryOfTheCurrentlyLoggedInUser() { + return success(staffService.getTheFactoryOfTheCurrentlyLoggedInUser()); + } + @PutMapping("/update") @Operation(summary = "更新员工") @PreAuthorize("@ss.hasPermission('factory:staff:update')") @@ -97,6 +103,15 @@ public class StaffController { return success(BeanUtils.toBean(staffs, StaffRespVO.class)); } + + @GetMapping("/getListByFactoryId") + @Operation(summary = "获得指定厂员工") + public CommonResult> getListByFactoryId(@RequestParam("factoryId") Long factoryId, + @RequestParam(value = "nickName", required = false) String nickName) { + List staffs = staffService.getListByFactoryId(factoryId, nickName); + return success(BeanUtils.toBean(staffs, StaffRespVO.class)); + } + @GetMapping("/page") @Operation(summary = "获得员工分页") @PreAuthorize("@ss.hasPermission('factory:staff:query')") @@ -122,12 +137,12 @@ public class StaffController { @PreAuthorize("@ss.hasPermission('factory:staff:export')") @OperateLog(type = EXPORT) public void exportStaffExcel(@Valid StaffPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = staffService.getStaffPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "员工.xls", "数据", StaffRespVO.class, - BeanUtils.toBean(list, StaffRespVO.class)); + BeanUtils.toBean(list, StaffRespVO.class)); } @GetMapping("/get-import-template") @@ -175,4 +190,4 @@ public class StaffController { List list = ExcelUtils.read(file, StaffImportExcelVO.class); return success(staffService.importUserList(list, updateSupport)); } -} \ No newline at end of file +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/StaffCertificateInformationController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/StaffCertificateInformationController.java new file mode 100644 index 00000000..3bca584a --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/StaffCertificateInformationController.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation.StaffCertificateInformationDO; +import cn.iocoder.yudao.module.smartfactory.service.staffcertificateinformation.StaffCertificateInformationService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 叉车员工证件信息") +@RestController +@RequestMapping("/smartfactory/staff-certificate-information") +@Validated +public class StaffCertificateInformationController { + + @Resource + private StaffCertificateInformationService staffCertificateInformationService; + + @PostMapping("/create") + @Operation(summary = "创建叉车员工证件信息") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:create')") + public CommonResult createStaffCertificateInformation(@Valid @RequestBody StaffCertificateInformationSaveReqVO createReqVO) { + return success(staffCertificateInformationService.createStaffCertificateInformation(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新叉车员工证件信息") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:update')") + public CommonResult updateStaffCertificateInformation(@Valid @RequestBody StaffCertificateInformationSaveReqVO updateReqVO) { + staffCertificateInformationService.updateStaffCertificateInformation(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除叉车员工证件信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:delete')") + public CommonResult deleteStaffCertificateInformation(@RequestParam("id") Long id) { + staffCertificateInformationService.deleteStaffCertificateInformation(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得叉车员工证件信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:query')") + public CommonResult getStaffCertificateInformation(@RequestParam("id") Long id) { + StaffCertificateInformationDO staffCertificateInformation = staffCertificateInformationService.getStaffCertificateInformation(id); + return success(BeanUtils.toBean(staffCertificateInformation, StaffCertificateInformationRespVO.class)); + } + + @GetMapping("/getByStaffId") + @Operation(summary = "通过工厂员工ID获得叉车员工证件信息") + @Parameter(name = "staffId", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:query')") + public CommonResult getByStaffId(@RequestParam("staffId") Long staffId) { + StaffCertificateInformationDO staffCertificateInformation = staffCertificateInformationService.getByStaffId(staffId); + return success(BeanUtils.toBean(staffCertificateInformation, StaffCertificateInformationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得叉车员工证件信息分页") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:query')") + public CommonResult> getStaffCertificateInformationPage(@Valid StaffCertificateInformationPageReqVO pageReqVO) { + PageResult pageResult = staffCertificateInformationService.getStaffCertificateInformationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StaffCertificateInformationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出叉车员工证件信息 Excel") + @PreAuthorize("@ss.hasPermission('smartfactory:staff-certificate-information:export')") + @OperateLog(type = EXPORT) + public void exportStaffCertificateInformationExcel(@Valid StaffCertificateInformationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = staffCertificateInformationService.getStaffCertificateInformationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "叉车员工证件信息.xls", "数据", StaffCertificateInformationRespVO.class, + BeanUtils.toBean(list, StaffCertificateInformationRespVO.class)); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationPageReqVO.java new file mode 100644 index 00000000..7ceb64cc --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationPageReqVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 叉车员工证件信息分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StaffCertificateInformationPageReqVO extends PageParam { + + @Schema(description = "工厂员工id", example = "93") + private Long staffId; + + @Schema(description = "身份证正面") + private String idCardFront; + + @Schema(description = "身份证反面") + private String idCardReverse; + + @Schema(description = "叉车证书") + private String forkliftCertificate; + + @Schema(description = "叉车年检信息") + private String forkliftAnnualInspection; + + @Schema(description = "年检过期时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] forkliftAnnualInspectionExpiredTime; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationRespVO.java new file mode 100644 index 00000000..8f837e92 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationRespVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 叉车员工证件信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StaffCertificateInformationRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9880") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "工厂员工id", example = "93") + @ExcelProperty("工厂员工id") + private Long staffId; + + @Schema(description = "工厂员工名称", example = "93") + @ExcelProperty("工厂员工名称") + private String staffName; + + @Schema(description = "身份证正面") + @ExcelProperty("身份证正面") + private String idCardFront; + + @Schema(description = "身份证反面") + @ExcelProperty("身份证反面") + private String idCardReverse; + + @Schema(description = "叉车证书") + @ExcelProperty("叉车证书") + private String forkliftCertificate; + + @Schema(description = "叉车年检信息") + @ExcelProperty("叉车年检信息") + private String forkliftAnnualInspection; + + @Schema(description = "年检过期时间") + @ExcelProperty("年检过期时间") + private LocalDateTime forkliftAnnualInspectionExpiredTime; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationSaveReqVO.java new file mode 100644 index 00000000..20927e06 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/staffcertificateinformation/vo/StaffCertificateInformationSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 叉车员工证件信息新增/修改 Request VO") +@Data +public class StaffCertificateInformationSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9880") + private Long id; + + @Schema(description = "工厂员工id", example = "93") + private Long staffId; + + @Schema(description = "身份证正面") + private String idCardFront; + + @Schema(description = "身份证反面") + private String idCardReverse; + + @Schema(description = "叉车证书") + private String forkliftCertificate; + + @Schema(description = "叉车年检信息") + private String forkliftAnnualInspection; + + @Schema(description = "年检过期时间") + private LocalDateTime forkliftAnnualInspectionExpiredTime; + + public static void main(String[] args) { + System.out.println(new Date().getTime()); + } +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsDO.java new file mode 100644 index 00000000..cf3600ce --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 搬运组工资规格关联 DO + * + * @author 艾楷 + */ +@TableName("sf_handling_group_amount_specifications") +@KeySequence("sf_handling_group_amount_specifications_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HandlingGroupAmountSpecificationsDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 搬运规格id + */ + private Long handlingSpecificationsId; + + @TableField(exist = false) + private String handlingSpecificationsName; + /** + * 数量 + */ + private Integer totalCount; + /** + * 日期 格式 yyyy-MM-dd + */ + private String dateStr; + /** + * 总金额(根据规格和总量计算出 该搬运组获得的总金额) + */ + private BigDecimal amount; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupuseramount/HandlingGroupUserAmountDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupuseramount/HandlingGroupUserAmountDO.java new file mode 100644 index 00000000..3307a013 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlinggroupuseramount/HandlingGroupUserAmountDO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 搬运组每日个人工资记录 DO + * + * @author 艾楷 + */ +@TableName("sf_handling_group_user_amount") +@KeySequence("sf_handling_group_user_amount_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HandlingGroupUserAmountDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 用户id + */ + private Long userId; + + /** + * 用户名称 + */ + @TableField(exist = false) + private String userName; + + /** + * 搬运组工资规格关联id + */ + private Long handlingGroupAmountSpecificationsId; + /** + * 日期 格式 yyyy-MM-dd + */ + private String dateStr; + /** + * 搬运组每日个人工资 + */ + private BigDecimal amount; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlingspecifications/HandlingSpecificationsDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlingspecifications/HandlingSpecificationsDO.java new file mode 100644 index 00000000..5fd10e3f --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/handlingspecifications/HandlingSpecificationsDO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工厂搬运规格 DO + * + * @author 艾楷 + */ +@TableName("sf_handling_specifications") +@KeySequence("sf_handling_specifications_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class HandlingSpecificationsDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 工厂id + */ + private Long factoryId; + /** + * 工厂名称 + */ + @TableField(exist = false) + private String factoryName; + /** + * 规格名称 + */ + private String specificationsName; + /** + * 类型 0数量 1重量 默认数量 + */ + private Integer type; + /** + * 重量 /(公斤 kg) + */ + private BigDecimal weight; + /** + * 数量 + */ + private Integer num; + /** + * 单价/(吨/1000 or 件) + */ + private BigDecimal unitPrice; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staffcertificateinformation/StaffCertificateInformationDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staffcertificateinformation/StaffCertificateInformationDO.java new file mode 100644 index 00000000..e3cb7b52 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/staffcertificateinformation/StaffCertificateInformationDO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * 叉车员工证件信息 DO + * + * @author 艾楷 + */ +@TableName("sf_staff_certificate_information") +@KeySequence("sf_staff_certificate_information_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StaffCertificateInformationDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 工厂员工id + */ + private Long staffId; + /** + * 工厂员工名称 + */ + @TableField(exist = false) + private String staffName; + /** + * 身份证正面 + */ + private String idCardFront; + /** + * 身份证反面 + */ + private String idCardReverse; + /** + * 叉车证书 + */ + private String forkliftCertificate; + /** + * 叉车年检信息 + */ + private String forkliftAnnualInspection; + /** + * 年检过期时间 + */ + private LocalDateTime forkliftAnnualInspectionExpiredTime; + /** + * 年检过期提醒 是否提醒 0否 1是 + */ + private Integer reminderFlag; + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.java new file mode 100644 index 00000000..3e4626aa --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupamountspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 搬运组工资规格关联 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface HandlingGroupAmountSpecificationsMapper extends BaseMapperX { + + default PageResult selectPage(HandlingGroupAmountSpecificationsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(HandlingGroupAmountSpecificationsDO::getHandlingSpecificationsId, reqVO.getHandlingSpecificationsId()) + .eqIfPresent(HandlingGroupAmountSpecificationsDO::getTotalCount, reqVO.getTotalCount()) + .eqIfPresent(HandlingGroupAmountSpecificationsDO::getDateStr, reqVO.getDateStr()) + .eqIfPresent(HandlingGroupAmountSpecificationsDO::getAmount, reqVO.getAmount()) + .betweenIfPresent(HandlingGroupAmountSpecificationsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(HandlingGroupAmountSpecificationsDO::getId)); + } + + /** + * 获取分页列表 + * + * @param page + * @param vo + * @return + */ + IPage getHandlingGroupAmountSpecificationsPage(@Param("page") Page page, @Param("vo") HandlingGroupAmountSpecificationsPageReqVO vo); + + /** + * 获取详情 + * + * @param id + * @return + */ + HandlingGroupAmountSpecificationsDO getHandlingGroupAmountSpecifications(@Param("id") Long id); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupuseramount/HandlingGroupUserAmountMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupuseramount/HandlingGroupUserAmountMapper.java new file mode 100644 index 00000000..656f4c6f --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlinggroupuseramount/HandlingGroupUserAmountMapper.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupuseramount; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.dto.StaffWagesPageDTO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.StaffWagesPageVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 搬运组每日个人工资记录 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface HandlingGroupUserAmountMapper extends BaseMapperX { + + default PageResult selectPage(HandlingGroupUserAmountPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(HandlingGroupUserAmountDO::getUserId, reqVO.getUserId()) + .eqIfPresent(HandlingGroupUserAmountDO::getHandlingGroupAmountSpecificationsId, reqVO.getHandlingGroupAmountSpecificationsId()) + .eqIfPresent(HandlingGroupUserAmountDO::getDateStr, reqVO.getDateStr()) + .eqIfPresent(HandlingGroupUserAmountDO::getAmount, reqVO.getAmount()) + .betweenIfPresent(HandlingGroupUserAmountDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(HandlingGroupUserAmountDO::getId)); + } + + /** + * @param page + * @param vo + * @return + */ + IPage getHandlingGroupUserAmountPage(@Param("page") Page page, @Param("vo") HandlingGroupUserAmountPageReqVO vo); + + /** + * 员工工资列表 + * + * @param page + * @param dto + * @return + */ + IPage staffWagesPage(@Param("page") Page page, @Param("dto") StaffWagesPageDTO dto); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlingspecifications/HandlingSpecificationsMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlingspecifications/HandlingSpecificationsMapper.java new file mode 100644 index 00000000..8c0fd3a4 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/handlingspecifications/HandlingSpecificationsMapper.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.handlingspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.HandlingSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工厂搬运规格 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface HandlingSpecificationsMapper extends BaseMapperX { + + default PageResult selectPage(HandlingSpecificationsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(HandlingSpecificationsDO::getFactoryId, reqVO.getFactoryId()) + .likeIfPresent(HandlingSpecificationsDO::getSpecificationsName, reqVO.getSpecificationsName()) + .eqIfPresent(HandlingSpecificationsDO::getType, reqVO.getType()) + .orderByDesc(HandlingSpecificationsDO::getId)); + } + + /** + * 分页列表 + * + * @param page + * @param vo + * @return + */ + IPage getHandlingSpecificationsPage(@Param("page") Page page, @Param("vo") HandlingSpecificationsPageReqVO vo); + + /** + * 获取列表 + * + * @param vo + * @return + */ + List getHandlingSpecificationsList(@Param("vo") HandlingSpecificationsPageReqVO vo); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffcertificateinformation/StaffCertificateInformationMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffcertificateinformation/StaffCertificateInformationMapper.java new file mode 100644 index 00000000..cfb54d06 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/staffcertificateinformation/StaffCertificateInformationMapper.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.staffcertificateinformation; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationPageReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation.StaffCertificateInformationDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 叉车员工证件信息 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface StaffCertificateInformationMapper extends BaseMapperX { + + default PageResult selectPage(StaffCertificateInformationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StaffCertificateInformationDO::getStaffId, reqVO.getStaffId()) + .eqIfPresent(StaffCertificateInformationDO::getIdCardFront, reqVO.getIdCardFront()) + .eqIfPresent(StaffCertificateInformationDO::getIdCardReverse, reqVO.getIdCardReverse()) + .eqIfPresent(StaffCertificateInformationDO::getForkliftCertificate, reqVO.getForkliftCertificate()) + .eqIfPresent(StaffCertificateInformationDO::getForkliftAnnualInspection, reqVO.getForkliftAnnualInspection()) + .betweenIfPresent(StaffCertificateInformationDO::getForkliftAnnualInspectionExpiredTime, reqVO.getForkliftAnnualInspectionExpiredTime()) + .betweenIfPresent(StaffCertificateInformationDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StaffCertificateInformationDO::getId)); + } + + /** + * 通过id获取 + * + * @param id + * @return + */ + StaffCertificateInformationDO getStaffCertificateInformation(@Param("id") Long id); + + /** + * 分页列表 + * + * @param page + * @param vo + * @return + */ + IPage getStaffCertificateInformationPage(@Param("page") Page page, @Param("vo") StaffCertificateInformationPageReqVO vo); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/job/staffCertificateInformation/StaffCertificateInformationJob.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/job/staffCertificateInformation/StaffCertificateInformationJob.java new file mode 100644 index 00000000..c1d95cf4 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/job/staffCertificateInformation/StaffCertificateInformationJob.java @@ -0,0 +1,121 @@ +package cn.iocoder.yudao.module.smartfactory.framework.job.staffCertificateInformation; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.framework.common.Constants; +import cn.iocoder.yudao.framework.common.enums.SocialTypeEnum; +import cn.iocoder.yudao.framework.common.template.WxMpMsgTemplateUtils; +import cn.iocoder.yudao.framework.common.template.dto.StaffCertificateInformationDTO; +import cn.iocoder.yudao.framework.common.template.vo.SubscribeMessageReqDTO; +import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation.StaffCertificateInformationDO; +import cn.iocoder.yudao.module.smartfactory.service.staff.StaffService; +import cn.iocoder.yudao.module.smartfactory.service.staffcertificateinformation.StaffCertificateInformationService; +import cn.iocoder.yudao.module.system.api.auth.AdminOauthUserOtherInfoApi; +import cn.iocoder.yudao.module.system.api.auth.dto.AdminOauthUserOtherInfoApiDTO; +import cn.iocoder.yudao.module.system.api.auth.vo.AdminOauthUserOtherInfoApiVO; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; +import cn.iocoder.yudao.module.system.api.subscribe.SubscribeMessageSendApi; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 员工证件过期提醒 工厂负责人 - 每天下午3点执行 过期前3个月就提醒下 + */ +@Component +@Slf4j +public class StaffCertificateInformationJob { + + @Resource + private StaffCertificateInformationService staffCertificateInformationService; + @Resource + private StaffService staffService; + @Resource + private DeptApi deptApi; + @Resource + private AdminOauthUserOtherInfoApi adminOauthUserOtherInfoApi; + + @Resource + private SubscribeMessageSendApi subscribeMessageSendApi; + private static final String CERTIFICATE_NAME = "叉车年检信息"; + private static final String REMARKS = "的叉车年检信息即将到期,请注意!"; + + @XxlJob("staffCertificateInformationJob") + @TenantJob // --- ⚠️ 这个注解 会将租户列表拉出来 完了后逐个租户执行 定时任务需要注意 + public ReturnT execute() throws Exception { + LocalDateTime now = LocalDateTime.now(); + now = now.plusMonths(3L); + // 获取当前日期 上个月得第一天 + List list = staffCertificateInformationService.list(new LambdaQueryWrapper() + .eq(StaffCertificateInformationDO::getReminderFlag, 0) + .le(StaffCertificateInformationDO::getForkliftAnnualInspectionExpiredTime, now)); + if (CollUtil.isEmpty(list)) { + return ReturnT.SUCCESS; + } + List ids = list.stream().map(StaffCertificateInformationDO::getId).collect(Collectors.toList()); + + Map forkliftAnnualInspectionExpiredTimeMap = list.stream().collect(Collectors.toMap(StaffCertificateInformationDO::getStaffId, StaffCertificateInformationDO::getForkliftAnnualInspectionExpiredTime)); + // 获取员工id 列表 + List staffIds = list.stream().map(StaffCertificateInformationDO::getStaffId).collect(Collectors.toList()); + // 查询员工列表 - 员工列表里面有工厂id 然后拿到工厂id 去查询部门表 获取到工厂负责人 + List staffList = staffService.getList(staffIds); + //根据工厂id分组 + Map> map = staffList.stream().collect(Collectors.groupingBy(StaffDO::getFactoryId)); + List factoryIds = new ArrayList<>(map.keySet()); + // 查询部门表根据工厂ids + List deptList = deptApi.getDeptByFactoryIds(factoryIds).getCheckedData(); + //工厂负责人map + Map factoryLeaderUserIdMap = new HashMap<>(); + if (CollUtil.isEmpty(deptList)) { + factoryLeaderUserIdMap = deptList.stream().collect(Collectors.toMap(DeptRespDTO::getFactoryId, DeptRespDTO::getLeaderUserId)); + } + + if (MapUtil.isNotEmpty(factoryLeaderUserIdMap)) { + // -- 获取发起人的openId + List adminOauthUserOtherInfoApiVOS = adminOauthUserOtherInfoApi.getOpenIdByCondition( + new AdminOauthUserOtherInfoApiDTO().setUserIds(new ArrayList<>(factoryLeaderUserIdMap.values())) + .setSocialType(SocialTypeEnum.WECHAT_MP.getType())).getCheckedData(); + Map leaderOpenIdMap = adminOauthUserOtherInfoApiVOS.stream().collect(Collectors.toMap(AdminOauthUserOtherInfoApiVO::getUserId, AdminOauthUserOtherInfoApiVO::getOpenId)); + for (StaffDO staffDO : staffList) { + Long factoryId = staffDO.getFactoryId(); + Long leaderUserId = factoryLeaderUserIdMap.get(factoryId); + String leaderOpenId = leaderOpenIdMap.get(leaderUserId); + if (leaderOpenId == null) { + continue; + } + LocalDateTime localDateTime = forkliftAnnualInspectionExpiredTimeMap.get(staffDO.getId()); + if (localDateTime == null) { + continue; + } + String time = localDateTime.format(Constants.REPO_DATE_FORMAT); + SubscribeMessageReqDTO dto = new WxMpMsgTemplateUtils().forkliftAnnualInspectionExpiredReminder(new StaffCertificateInformationDTO() + .setOpenId(leaderOpenId) + .setUserName(staffDO.getNickName()) + .setCertificateName(CERTIFICATE_NAME) + .setTime(time) + .setRemarks(staffDO.getNickName() + REMARKS) + .setMiniProgramState("formal")); + subscribeMessageSendApi.sendMpMsg(dto); + } + // -- 将这些人设为已经提醒 + staffCertificateInformationService.update(new StaffCertificateInformationDO().setReminderFlag(1), + new LambdaQueryWrapper() + .in(StaffCertificateInformationDO::getId, ids)); + } + // 返回执行成功 + return ReturnT.SUCCESS; + } +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/rpc/config/RpcConfiguration.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/rpc/config/RpcConfiguration.java index 4e32b4ed..eeaec6cd 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/rpc/config/RpcConfiguration.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/framework/rpc/config/RpcConfiguration.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.bpm.api.oa.BpmOALoanApi; import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.infra.api.file.FileApi; import cn.iocoder.yudao.module.system.api.assets.AssetsTypeApi; +import cn.iocoder.yudao.module.system.api.auth.AdminOauthUserOtherInfoApi; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.PostApi; import cn.iocoder.yudao.module.system.api.dict.DictDataApi; @@ -20,7 +21,7 @@ import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) @EnableFeignClients(clients = {FileApi.class, RoleApi.class, DeptApi.class, PostApi.class, AdminUserApi.class, SmsSendApi.class, DictDataApi.class, NotifyMessageSendApi.class, - SubscribeMessageSendApi.class, ConfigApi.class, PermissionApi.class, AssetsTypeApi.class, LoanApi.class, BpmOALoanApi.class + SubscribeMessageSendApi.class, ConfigApi.class, PermissionApi.class, AssetsTypeApi.class, LoanApi.class, BpmOALoanApi.class, AdminOauthUserOtherInfoApi.class }) public class RpcConfiguration { } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsService.java new file mode 100644 index 00000000..1e68870a --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsService.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlinggroupamountspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO; + +import javax.validation.Valid; + +/** + * 搬运组工资规格关联 Service 接口 + * + * @author 艾楷 + */ +public interface HandlingGroupAmountSpecificationsService { + + /** + * 创建搬运组工资规格关联 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createHandlingGroupAmountSpecifications(@Valid HandlingGroupAmountSpecificationsSaveReqVO createReqVO); + + /** + * 更新搬运组工资规格关联 + * + * @param updateReqVO 更新信息 + */ + void updateHandlingGroupAmountSpecifications(@Valid HandlingGroupAmountSpecificationsSaveReqVO updateReqVO); + + /** + * 删除搬运组工资规格关联 + * + * @param id 编号 + */ + void deleteHandlingGroupAmountSpecifications(Long id); + + /** + * 获得搬运组工资规格关联 + * + * @param id 编号 + * @return 搬运组工资规格关联 + */ + HandlingGroupAmountSpecificationsDO getHandlingGroupAmountSpecifications(Long id); + + /** + * 获得搬运组工资规格关联分页 + * + * @param pageReqVO 分页查询 + * @return 搬运组工资规格关联分页 + */ + PageResult getHandlingGroupAmountSpecificationsPage(HandlingGroupAmountSpecificationsPageReqVO pageReqVO); + + /** + * 新增编辑 + * + * @param createReqVO + */ + void createOrEdit(@Valid HandlingGroupAmountSpecificationsSaveReqVO createReqVO); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsServiceImpl.java new file mode 100644 index 00000000..42053976 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsServiceImpl.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlinggroupamountspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsMapper; +import cn.iocoder.yudao.module.smartfactory.service.handlingspecifications.HandlingSpecificationsService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.CANNOT_FIND_THE_CORRESPONDING_FACTORY_HANDLING_SPECIFICATION; + +/** + * 搬运组工资规格关联 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class HandlingGroupAmountSpecificationsServiceImpl implements HandlingGroupAmountSpecificationsService { + + @Resource + private HandlingGroupAmountSpecificationsMapper handlingGroupAmountSpecificationsMapper; + @Resource + private HandlingSpecificationsService handlingSpecificationsService; + private static final BigDecimal THOUSANDTH = new BigDecimal("0.001"); + + @Override + public Long createHandlingGroupAmountSpecifications(HandlingGroupAmountSpecificationsSaveReqVO createReqVO) { + // 插入 + HandlingGroupAmountSpecificationsDO handlingGroupAmountSpecifications = BeanUtils.toBean(createReqVO, HandlingGroupAmountSpecificationsDO.class); + handlingGroupAmountSpecificationsMapper.insert(handlingGroupAmountSpecifications); + + // 返回 + return handlingGroupAmountSpecifications.getId(); + } + + @Override + public void updateHandlingGroupAmountSpecifications(HandlingGroupAmountSpecificationsSaveReqVO updateReqVO) { + // 更新 + HandlingGroupAmountSpecificationsDO updateObj = BeanUtils.toBean(updateReqVO, HandlingGroupAmountSpecificationsDO.class); + handlingGroupAmountSpecificationsMapper.updateById(updateObj); + } + + @Override + public void deleteHandlingGroupAmountSpecifications(Long id) { + // 删除 + handlingGroupAmountSpecificationsMapper.deleteById(id); + } + + + @Override + public HandlingGroupAmountSpecificationsDO getHandlingGroupAmountSpecifications(Long id) { + return handlingGroupAmountSpecificationsMapper.getHandlingGroupAmountSpecifications(id); + } + + @Override + public PageResult getHandlingGroupAmountSpecificationsPage(HandlingGroupAmountSpecificationsPageReqVO pageReqVO) { + IPage pageResult = handlingGroupAmountSpecificationsMapper.getHandlingGroupAmountSpecificationsPage(MyBatisUtils.buildPage(pageReqVO), pageReqVO); + return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createOrEdit(HandlingGroupAmountSpecificationsSaveReqVO createReqVO) { + HandlingSpecificationsDO handlingSpecificationsDO = handlingSpecificationsService.getById(createReqVO.getHandlingSpecificationsId()); + if (handlingSpecificationsDO == null) { + throw exception(CANNOT_FIND_THE_CORRESPONDING_FACTORY_HANDLING_SPECIFICATION); + } + BigDecimal totalAmount; + if (handlingSpecificationsDO.getType() == 0) { + totalAmount = new BigDecimal(createReqVO.getTotalCount().toString()).multiply(handlingSpecificationsDO.getUnitPrice()); + } else { + totalAmount = new BigDecimal(createReqVO.getTotalCount().toString()).multiply(handlingSpecificationsDO.getWeight()) + .multiply(handlingSpecificationsDO.getUnitPrice().multiply(THOUSANDTH)); + } + // 插入 + HandlingGroupAmountSpecificationsDO handlingGroupAmountSpecifications = BeanUtils.toBean(createReqVO, HandlingGroupAmountSpecificationsDO.class); + handlingGroupAmountSpecifications.setAmount(totalAmount); + handlingGroupAmountSpecificationsMapper.insertOrUpdate(handlingGroupAmountSpecifications); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountService.java new file mode 100644 index 00000000..7dce3e23 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountService.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlinggroupuseramount; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.dto.StaffWagesPageDTO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.StaffWagesPageVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO; + +import javax.validation.Valid; + +/** + * 搬运组每日个人工资记录 Service 接口 + * + * @author 艾楷 + */ +public interface HandlingGroupUserAmountService { + + /** + * 创建搬运组每日个人工资记录 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createHandlingGroupUserAmount(@Valid HandlingGroupUserAmountSaveReqVO createReqVO); + + /** + * 更新搬运组每日个人工资记录 + * + * @param updateReqVO 更新信息 + */ + void updateHandlingGroupUserAmount(@Valid HandlingGroupUserAmountSaveReqVO updateReqVO); + + /** + * 删除搬运组每日个人工资记录 + * + * @param id 编号 + */ + void deleteHandlingGroupUserAmount(Long id); + + /** + * 获得搬运组每日个人工资记录 + * + * @param id 编号 + * @return 搬运组每日个人工资记录 + */ + HandlingGroupUserAmountDO getHandlingGroupUserAmount(Long id); + + /** + * 获得搬运组每日个人工资记录分页 + * + * @param pageReqVO 分页查询 + * @return 搬运组每日个人工资记录分页 + */ + PageResult getHandlingGroupUserAmountPage(HandlingGroupUserAmountPageReqVO pageReqVO); + + /** + * 新增编辑 + * + * @param createReqVO + */ + void createOrEdit(@Valid HandlingGroupUserAmountSaveReqVO createReqVO); + + /** + * 员工工资分页列表 + * + * @param dto + * @return + */ + PageResult staffWagesPage(@Valid StaffWagesPageDTO dto); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountServiceImpl.java new file mode 100644 index 00000000..b9339e1e --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlinggroupuseramount/HandlingGroupUserAmountServiceImpl.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlinggroupuseramount; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.dto.StaffWagesPageDTO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.StaffWagesPageVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupuseramount.HandlingGroupUserAmountMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 搬运组每日个人工资记录 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class HandlingGroupUserAmountServiceImpl implements HandlingGroupUserAmountService { + + @Resource + private HandlingGroupUserAmountMapper handlingGroupUserAmountMapper; + + @Override + public Long createHandlingGroupUserAmount(HandlingGroupUserAmountSaveReqVO createReqVO) { + // 插入 + HandlingGroupUserAmountDO handlingGroupUserAmount = BeanUtils.toBean(createReqVO, HandlingGroupUserAmountDO.class); + handlingGroupUserAmountMapper.insert(handlingGroupUserAmount); + // 返回 + return handlingGroupUserAmount.getId(); + } + + @Override + public void updateHandlingGroupUserAmount(HandlingGroupUserAmountSaveReqVO updateReqVO) { + // 更新 + HandlingGroupUserAmountDO updateObj = BeanUtils.toBean(updateReqVO, HandlingGroupUserAmountDO.class); + handlingGroupUserAmountMapper.updateById(updateObj); + } + + @Override + public void deleteHandlingGroupUserAmount(Long id) { + // 删除 + handlingGroupUserAmountMapper.deleteById(id); + } + + @Override + public HandlingGroupUserAmountDO getHandlingGroupUserAmount(Long id) { + return handlingGroupUserAmountMapper.selectById(id); + } + + @Override + public PageResult getHandlingGroupUserAmountPage(HandlingGroupUserAmountPageReqVO pageReqVO) { + IPage page = handlingGroupUserAmountMapper.getHandlingGroupUserAmountPage(MyBatisUtils.buildPage(pageReqVO) ,pageReqVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createOrEdit(HandlingGroupUserAmountSaveReqVO createReqVO) { + // 插入 + HandlingGroupUserAmountDO handlingGroupUserAmount = BeanUtils.toBean(createReqVO, HandlingGroupUserAmountDO.class); + handlingGroupUserAmountMapper.insertOrUpdate(handlingGroupUserAmount); + } + + @Override + public PageResult staffWagesPage(StaffWagesPageDTO dto) { + IPage page = handlingGroupUserAmountMapper.staffWagesPage(MyBatisUtils.buildPage(dto) ,dto); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsService.java new file mode 100644 index 00000000..1f569aa5 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlingspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.HandlingSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.HandlingSpecificationsSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 工厂搬运规格 Service 接口 + * + * @author 艾楷 + */ +public interface HandlingSpecificationsService extends IService { + + /** + * 创建工厂搬运规格 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createHandlingSpecifications(@Valid HandlingSpecificationsSaveReqVO createReqVO); + + /** + * 更新工厂搬运规格 + * + * @param updateReqVO 更新信息 + */ + void updateHandlingSpecifications(@Valid HandlingSpecificationsSaveReqVO updateReqVO); + + /** + * 删除工厂搬运规格 + * + * @param id 编号 + */ + void deleteHandlingSpecifications(Long id); + + /** + * 获得工厂搬运规格 + * + * @param id 编号 + * @return 工厂搬运规格 + */ + HandlingSpecificationsDO getHandlingSpecifications(Long id); + + /** + * 获得工厂搬运规格分页 + * + * @param pageReqVO 分页查询 + * @return 工厂搬运规格分页 + */ + PageResult getHandlingSpecificationsPage(HandlingSpecificationsPageReqVO pageReqVO); + + /** + * 获取列表 + * + * @param pageReqVO + * @return + */ + List getHandlingSpecificationsList(@Valid HandlingSpecificationsPageReqVO pageReqVO); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsServiceImpl.java new file mode 100644 index 00000000..532643ba --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/handlingspecifications/HandlingSpecificationsServiceImpl.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.smartfactory.service.handlingspecifications; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.HandlingSpecificationsPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.handlingspecifications.vo.HandlingSpecificationsSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.handlingspecifications.HandlingSpecificationsMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * 工厂搬运规格 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class HandlingSpecificationsServiceImpl extends ServiceImpl implements HandlingSpecificationsService { + + @Resource + private HandlingSpecificationsMapper handlingSpecificationsMapper; + + @Override + public Long createHandlingSpecifications(HandlingSpecificationsSaveReqVO createReqVO) { + // 插入 + HandlingSpecificationsDO handlingSpecifications = BeanUtils.toBean(createReqVO, HandlingSpecificationsDO.class); + handlingSpecificationsMapper.insert(handlingSpecifications); + // 返回 + return handlingSpecifications.getId(); + } + + @Override + public void updateHandlingSpecifications(HandlingSpecificationsSaveReqVO updateReqVO) { + // 更新 + HandlingSpecificationsDO updateObj = BeanUtils.toBean(updateReqVO, HandlingSpecificationsDO.class); + handlingSpecificationsMapper.updateById(updateObj); + } + + @Override + public void deleteHandlingSpecifications(Long id) { + // 删除 + handlingSpecificationsMapper.deleteById(id); + } + + @Override + public HandlingSpecificationsDO getHandlingSpecifications(Long id) { + return handlingSpecificationsMapper.selectById(id); + } + + @Override + public PageResult getHandlingSpecificationsPage(HandlingSpecificationsPageReqVO pageReqVO) { + IPage page = handlingSpecificationsMapper.getHandlingSpecificationsPage(MyBatisUtils.buildPage(pageReqVO) ,pageReqVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + @Override + public List getHandlingSpecificationsList(HandlingSpecificationsPageReqVO pageReqVO) { + return handlingSpecificationsMapper.getHandlingSpecificationsList(pageReqVO); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java index b4b6c852..ea62825c 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffService.java @@ -1,8 +1,11 @@ package cn.iocoder.yudao.module.smartfactory.service.staff; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.*; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.StaffDataRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffImportExcelVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffImportRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO; import javax.validation.Valid; @@ -64,12 +67,14 @@ public interface StaffService { /** * 获取人员数量 + * * @return */ Integer getCount(); /** * 查询工厂员工信息 + * * @param factoryId 工厂编号 * @return */ @@ -77,7 +82,8 @@ public interface StaffService { /** * 导入员工 - * @param list 导入数据集合 + * + * @param list 导入数据集合 * @param updateSupport 是否可更新 * @return 导入结果 */ @@ -87,7 +93,7 @@ public interface StaffService { * 获取指定厂区得员工列表 * * @param factoryId 工厂编号 - * @param isIn 是否获取该厂区员工 + * @param isIn 是否获取该厂区员工 * @return 员工列表 */ List getListByFactory(Long factoryId, Boolean isIn); @@ -102,8 +108,25 @@ public interface StaffService { /** * 获取员工信息列表 + * * @param staffIds 员工编号集合 * @return 员工信息列表 */ List getList(Collection staffIds); + + /** + * 获得指定工厂员工 + * + * @param factoryId + * @param nickName + * @return + */ + List getListByFactoryId(Long factoryId, String nickName); + + /** + * + * @param userId + * @return + */ + Long getTheFactoryOfTheCurrentlyLoggedInUser(); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java index 5a8caf68..3c67a442 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staff/StaffServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.util.string.DTO.IdCardDO; import cn.iocoder.yudao.framework.common.util.string.StrUtils; import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.StaffDataRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffImportExcelVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffImportRespVO; @@ -16,8 +17,12 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffPageR import cn.iocoder.yudao.module.smartfactory.controller.admin.staff.vo.StaffSaveReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staff.StaffDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.staff.StaffMapper; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.dict.DictDataApi; import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -46,6 +51,10 @@ public class StaffServiceImpl implements StaffService { @Resource private DictDataApi dictDataApi; + @Resource + private DeptApi deptApi; + @Resource + private AdminUserApi adminUserApi; @Override public Long createStaff(StaffSaveReqVO createReqVO) { @@ -238,4 +247,31 @@ public class StaffServiceImpl implements StaffService { public List getList(Collection staffIds) { return staffMapper.selectList(StaffDO::getId, staffIds); } + + @Override + public List getListByFactoryId(Long factoryId, String nickName) { + return staffMapper.selectList(new LambdaQueryWrapperX() + .eq(factoryId != null, StaffDO::getFactoryId, factoryId) + .like(StrUtil.isNotEmpty(nickName), StaffDO::getNickName, nickName)); + } + + @Override + public Long getTheFactoryOfTheCurrentlyLoggedInUser() { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + //获取当前登录用户 + AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(userId).getCheckedData(); + Long deptId = null; + if (adminUserRespDTO != null) { + deptId = adminUserRespDTO.getDeptId(); + } + DeptRespDTO dto = null; + if (deptId != null) { + dto = deptApi.getDept(deptId).getCheckedData(); + } + // 获取当前登录用户所属部门 + if (dto == null) { + return null; + } + return dto.getFactoryId(); + } } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationService.java new file mode 100644 index 00000000..cb243be3 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.smartfactory.service.staffcertificateinformation; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation.StaffCertificateInformationDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import javax.validation.Valid; + +/** + * 叉车员工证件信息 Service 接口 + * + * @author 艾楷 + */ +public interface StaffCertificateInformationService extends IService { + + /** + * 创建叉车员工证件信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStaffCertificateInformation(@Valid StaffCertificateInformationSaveReqVO createReqVO); + + /** + * 更新叉车员工证件信息 + * + * @param updateReqVO 更新信息 + */ + void updateStaffCertificateInformation(@Valid StaffCertificateInformationSaveReqVO updateReqVO); + + /** + * 删除叉车员工证件信息 + * + * @param id 编号 + */ + void deleteStaffCertificateInformation(Long id); + + /** + * 获得叉车员工证件信息 + * + * @param id 编号 + * @return 叉车员工证件信息 + */ + StaffCertificateInformationDO getStaffCertificateInformation(Long id); + + /** + * 获得叉车员工证件信息分页 + * + * @param pageReqVO 分页查询 + * @return 叉车员工证件信息分页 + */ + PageResult getStaffCertificateInformationPage(StaffCertificateInformationPageReqVO pageReqVO); + + /** + * 通过员工ID获得叉车员工证件信息 + * + * @param staffId + * @return + */ + StaffCertificateInformationDO getByStaffId(Long staffId); +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationServiceImpl.java new file mode 100644 index 00000000..2d93f7b7 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/staffcertificateinformation/StaffCertificateInformationServiceImpl.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.smartfactory.service.staffcertificateinformation; + +import cn.iocoder.yudao.framework.common.Constants; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.staffcertificateinformation.vo.StaffCertificateInformationSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.staffcertificateinformation.StaffCertificateInformationDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.staffcertificateinformation.StaffCertificateInformationMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 叉车员工证件信息 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class StaffCertificateInformationServiceImpl extends ServiceImpl implements StaffCertificateInformationService { + + @Resource + private StaffCertificateInformationMapper staffCertificateInformationMapper; + + @Override + public Long createStaffCertificateInformation(StaffCertificateInformationSaveReqVO createReqVO) { + // 插入 + StaffCertificateInformationDO staffCertificateInformation = BeanUtils.toBean(createReqVO, StaffCertificateInformationDO.class); + staffCertificateInformationMapper.insert(staffCertificateInformation); + // 返回 + return staffCertificateInformation.getId(); + } + + @Override + public void updateStaffCertificateInformation(StaffCertificateInformationSaveReqVO updateReqVO) { + // 更新 + StaffCertificateInformationDO updateObj = BeanUtils.toBean(updateReqVO, StaffCertificateInformationDO.class); + // 判断时间是否有过改动 - 有的话 设置为未提醒 + StaffCertificateInformationDO staffCertificateInformation = this.getStaffCertificateInformation(updateObj.getId()); + String oldTimeStr = staffCertificateInformation.getForkliftAnnualInspectionExpiredTime().format(Constants.REPO_DATE_FORMAT); + String newTimeStr = updateObj.getForkliftAnnualInspectionExpiredTime().format(Constants.REPO_DATE_FORMAT); + if (!oldTimeStr.equals(newTimeStr)) { + updateObj.setReminderFlag(0); + } + staffCertificateInformationMapper.updateById(updateObj); + } + + @Override + public void deleteStaffCertificateInformation(Long id) { + // 删除 + staffCertificateInformationMapper.deleteById(id); + } + + @Override + public StaffCertificateInformationDO getStaffCertificateInformation(Long id) { + return staffCertificateInformationMapper.getStaffCertificateInformation(id); + } + + @Override + public PageResult getStaffCertificateInformationPage(StaffCertificateInformationPageReqVO pageReqVO) { + IPage page = staffCertificateInformationMapper.getStaffCertificateInformationPage(MyBatisUtils.buildPage(pageReqVO), pageReqVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + @Override + public StaffCertificateInformationDO getByStaffId(Long staffId) { + return staffCertificateInformationMapper.selectOne(new LambdaQueryWrapper() + .eq(StaffCertificateInformationDO::getStaffId, staffId)); + } + +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.xml new file mode 100644 index 00000000..2cc9cc9c --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupamountspecifications/HandlingGroupAmountSpecificationsMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupuseramount/HandlingGroupUserAmountMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupuseramount/HandlingGroupUserAmountMapper.xml new file mode 100644 index 00000000..3d3e0b5b --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlinggroupuseramount/HandlingGroupUserAmountMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlingspecifications/HandlingSpecificationsMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlingspecifications/HandlingSpecificationsMapper.xml new file mode 100644 index 00000000..360f1da0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/handlingspecifications/HandlingSpecificationsMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffcertificateinformation/StaffCertificateInformationMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffcertificateinformation/StaffCertificateInformationMapper.xml new file mode 100644 index 00000000..ca354516 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/staffcertificateinformation/StaffCertificateInformationMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + +