diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
index a8473db..a97192f 100644
--- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
+++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysFile.java
@@ -1,6 +1,9 @@
package com.bonus.system.api.domain;
import lombok.Builder;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -9,6 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
*
* @author bonus
*/
+@Data
@Builder
public class SysFile
{
@@ -22,26 +26,6 @@ public class SysFile
*/
private String url;
- public String getName()
- {
- return name;
- }
-
- public void setName(String name)
- {
- this.name = name;
- }
-
- public String getUrl()
- {
- return url;
- }
-
- public void setUrl(String url)
- {
- this.url = url;
- }
-
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
index d9e23de..c0ee783 100644
--- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
+++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
@@ -85,6 +85,11 @@ public class SysUser extends BaseEntity {
*/
private String password;
+ /**
+ * 旧密码
+ */
+ private String oldPassword;
+
@Excel(name = "角色")
private String roleName;
@@ -281,6 +286,16 @@ public class SysUser extends BaseEntity {
this.password = password;
}
+
+ public String getOldPassword() {
+ return oldPassword;
+ }
+
+ public void setOldPassword(String oldPassword) {
+ this.oldPassword = oldPassword;
+ }
+
+
public String getStatus() {
return status;
}
diff --git a/bonus-common/bonus-common-core/pom.xml b/bonus-common/bonus-common-core/pom.xml
index 9ef4b68..f3564da 100644
--- a/bonus-common/bonus-common-core/pom.xml
+++ b/bonus-common/bonus-common-core/pom.xml
@@ -25,14 +25,6 @@
${project.basedir}/lib/arcsoft-sdk-face-lin.jar
-
-
-
-
-
-
-
-
org.springframework.cloud
@@ -182,4 +174,5 @@
+
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
index d460d08..eb60776 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
@@ -180,4 +180,15 @@ public class Constants
* 分包班组入场信息
*/
public static final String PM_SUB_TEAM_CONTRACT = "pm_sub_team_contract";
+
+ /**
+ * 人员打卡照片
+ */
+ public static final String FILE_UPLOAD_ATT_PHOTO = "bm_att_person";
+
+ /**
+ * 人员记录表照片
+ */
+ public static final String FILE_UPLOAD_ATT_RECORD_PHOTO = "bm_att_record";
+
}
diff --git a/bonus-modules/bonus-bmw/pom.xml b/bonus-modules/bonus-bmw/pom.xml
index 08afd61..f713dd0 100644
--- a/bonus-modules/bonus-bmw/pom.xml
+++ b/bonus-modules/bonus-bmw/pom.xml
@@ -80,6 +80,12 @@
bonus-common-log
+
+
+
+
+
+
@@ -116,6 +122,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ true
+
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppController.java
index 2f55b50..9e61455 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppController.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppController.java
@@ -4,6 +4,7 @@ import com.bonus.bmw.domain.dto.FileBasicMsgDto;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.vo.BmSubContractVo;
+import com.bonus.bmw.domain.vo.TreeVo;
import com.bonus.bmw.service.AppService;
import com.bonus.bmw.service.BmSubContractService;
import com.bonus.common.core.utils.json.FastJsonHelper;
@@ -16,6 +17,7 @@ import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.InnerAuth;
import com.bonus.common.security.annotation.RequiresPermissions;
import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth;
+import com.bonus.system.api.domain.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -40,5 +42,46 @@ public class AppController extends BaseController {
@Resource
private AppService service;
+ //, requiresPermissions = @RequiresPermissions("app:password:validate")
+ @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false))
+ @PostMapping("/validatePassword")
+ @SysLog(title = "旧密码校验", businessType = OperaType.QUERY, logType = 0, module = "APP->修改密码->旧手机号校验", details = "旧手机号校验")
+ public AjaxResult validatePassword(@RequestBody SysUser sysUser) {
+ try {
+ return service.validatePassword(sysUser);
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ return error("系统异常,请联系管理员");
+ }
+
+
+ //, requiresPermissions = @RequiresPermissions("app:password:update")
+ @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false))
+ @PostMapping("/updatePassword")
+ @SysLog(title = "新密码修改", businessType = OperaType.UPDATE, logType = 0, module = "APP->修改密码->新密码修改", details = "新密码修改")
+ public AjaxResult updatePassword(@RequestBody SysUser sysUser) {
+ try {
+ return service.updatePassword(sysUser);
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ return error("系统异常,请联系管理员");
+ }
+
+
+ @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("app:worker:tree"))
+ @PostMapping("/getComWorkerTree")
+ @SysLog(title = "组织人员树", businessType = OperaType.UPDATE, logType = 0, module = "APP->人员检查->组织人员树", details = "组织人员树")
+ public AjaxResult getComWorkerTree(TreeVo vo) {
+ try {
+ return service.getComWorkerTree(vo);
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ return error("系统异常,请联系管理员");
+ }
+
+
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppRecognitionController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppRecognitionController.java
new file mode 100644
index 0000000..23db432
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/AppRecognitionController.java
@@ -0,0 +1,58 @@
+package com.bonus.bmw.controller;
+
+import com.bonus.bmw.domain.dto.AppFileDto;
+import com.bonus.bmw.domain.po.FaceRecognitionBean;
+import com.bonus.bmw.domain.vo.TreeVo;
+import com.bonus.bmw.service.AppRecognitionService;
+import com.bonus.bmw.service.AppService;
+import com.bonus.common.core.domain.R;
+import com.bonus.common.core.web.controller.BaseController;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.common.log.annotation.SysLog;
+import com.bonus.common.log.enums.OperaType;
+import com.bonus.common.security.annotation.InnerAuth;
+import com.bonus.common.security.annotation.RequiresPermissions;
+import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth;
+import com.bonus.system.api.domain.SysFile;
+import com.bonus.system.api.domain.SysUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * app部分接口
+ * @author fly
+ * @date 2025/8/23
+ */
+@Slf4j
+@RestController
+@RequestMapping("/appRecognition")
+public class AppRecognitionController extends BaseController {
+
+ @Resource
+ private AppRecognitionService service;
+
+ /**
+ * 人脸识别-人脸照片采集入库
+ */
+ @PostMapping("/collectFacialData")
+ public R collectFacialData(MultipartFile facePhoto, FaceRecognitionBean bean) {
+ return service.uploadFaceRecognition(facePhoto, bean);
+ }
+
+ /**
+ * 人脸识别-识别人脸
+ */
+ @PostMapping("/getFaceRecognition")
+ public R getFaceRecognition(MultipartFile facePhoto) {
+ return service.getFaceRecognition(facePhoto);
+ }
+
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/AppFileDto.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/AppFileDto.java
new file mode 100644
index 0000000..6bcc337
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/AppFileDto.java
@@ -0,0 +1,63 @@
+package com.bonus.bmw.domain.dto;
+
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 文件信息
+ *
+ * @author fly
+ */
+@Data
+public class AppFileDto {
+ /**
+ * 文件名称
+ */
+ private String name;
+
+ /**
+ * 文件地址
+ */
+ private String url;
+
+ /**
+ * 文件大小KB
+ */
+ private Integer fileSize = 0;
+
+ /**
+ * 是否上传成功 1:成功 0:失败
+ */
+ private Integer isSuccess;
+ /**
+ * 压缩文件名称
+ */
+ private String ysName;
+
+ /**
+ * 压缩文件地址
+ */
+ private String ysUrl;
+
+ /**
+ * 压缩文件大小KB
+ */
+ private Integer ysFileSize = 0;
+
+ private String gtId;
+
+ private String gtName;
+
+ private String personData;
+
+ private boolean isFace;
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("name", getName())
+ .append("url", getUrl())
+ .toString();
+ }
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/BmWorkerEinUserVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/BmWorkerEinUserVo.java
new file mode 100644
index 0000000..50be781
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/BmWorkerEinUserVo.java
@@ -0,0 +1,107 @@
+package com.bonus.bmw.domain.dto;
+
+import lombok.Data;
+
+/**
+ * 当前工程在场的人员
+ * @author 黑子
+ */
+@Data
+public class BmWorkerEinUserVo {
+
+ private String id;
+
+ /**
+ * 设备编码
+ */
+ private String devCode;
+ /**
+ * 人员id
+ */
+ private String userId;
+ /**
+ * 工程id
+ */
+ private String proId;
+ /**
+ * 工程名称
+ */
+ private String proName;
+ /**
+ * 班组名称
+ */
+ private String teamName;
+ /**
+ * 班组id
+ */
+ private String teamId;
+ /**
+ * 分包名称
+ */
+ private String subName;
+ /**
+ * 分包id
+ */
+ private String subId;
+ /**
+ * 项目部id
+ */
+ private String orgId;
+ /**
+ * 岗位id
+ */
+ private String postId;
+ /**
+ * 项目部名称
+ */
+ private String orgName;
+ /**
+ * 月份
+ */
+ private String attMonth;
+ /**
+ * 日
+ */
+ private String attDay;
+ /**
+ * 日薪
+ */
+ private String dailyWage;
+ /**
+ * 是否补卡
+ */
+ private String isRepair="0";
+
+ private String image;
+ /**
+ * 考勤时间
+ */
+ private String attTime;
+ /**
+ * 考前突破
+ */
+ private String attPhoto;
+ /**
+ * 身份证号码
+ */
+ private String idNumber;
+ /**
+ * 合同信息
+ */
+ private String contractId;
+
+ /**
+ * 用户名
+ */
+ private String userName;
+
+ /**
+ * 创建时间
+ */
+ private String createTime;
+ /**
+ * 考勤设备名称
+ */
+ private String devName;
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/PmWorkerDto.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/PmWorkerDto.java
index 2ee9458..3961bdf 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/PmWorkerDto.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/PmWorkerDto.java
@@ -38,6 +38,15 @@ public class PmWorkerDto {
* 分包名称
*/
private Integer subId;
+
+ /**
+ * 项目名称
+ */
+ private String proName;
+ /**
+ * 分包名称
+ */
+ private String subName;
/**
* 班组名称
*/
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/FaceRecognitionBean.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/FaceRecognitionBean.java
new file mode 100644
index 0000000..68ec58b
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/FaceRecognitionBean.java
@@ -0,0 +1,60 @@
+package com.bonus.bmw.domain.po;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 人脸识别
+ * @author fly
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FaceRecognitionBean {
+
+ /**
+ * 用户编号
+ */
+ private Integer userId;
+
+ /**
+ * 图片base
+ */
+ private String img;
+
+ /**
+ * 操作类型 add delete replace
+ */
+ private String optMode;
+
+ /**
+ * 人员标识
+ */
+ private String uniqueKey;
+
+ /**
+ * 人脸照片路径
+ */
+ private String facePath;
+
+ /**
+ * 身份证
+ */
+ private String idNumber;
+
+ public FaceRecognitionBean(String img, String idNumber) {
+ this.img = img;
+ this.idNumber = idNumber;
+ }
+
+ public FaceRecognitionBean(String img, String optMode, String uniqueKey) {
+ this.img = img;
+ this.optMode = optMode;
+ this.uniqueKey = uniqueKey;
+ }
+
+ public FaceRecognitionBean(String img) {
+ this.img = img;
+ }
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/HomePagePo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/HomePagePo.java
index 10c4d19..4bb413b 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/HomePagePo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/po/HomePagePo.java
@@ -55,4 +55,6 @@ public class HomePagePo {
private Integer postId;
+ private String idNumber;
+
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java
index 57b159e..9929288 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerBlack.java
@@ -65,13 +65,13 @@ public class BmWorkerBlack extends BaseEntity {
/**
* 开始时间
*/
- @Excel(name = "开始日期", sort = 8)
+ @Excel(name = "开始日期(yyyy-MM-dd)", sort = 8)
private String startTime;
/**
* 结束时间
*/
- @Excel(name = "结束日期", sort = 9)
+ @Excel(name = "结束日期(yyyy-MM-dd)", sort = 9)
private String endTime;
/**
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePagePmWorkerVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePagePmWorkerVo.java
index 9389aba..b60fcec 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePagePmWorkerVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePagePmWorkerVo.java
@@ -104,8 +104,24 @@ public class HomePagePmWorkerVo {
/**
- * 人脸照片
+ * 创建时间
+ */
+ private Integer wageCardId;
+
+ private String bankName;
+
+ private String bankBranchName;
+
+ private String bankCardCode;
+
+ /**
+ * 合同照片
*/
private List files;
+ /**
+ * 工资卡照片
+ */
+ private List wageFiles;
+
}
\ No newline at end of file
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageSubProVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageSubProVo.java
index 29678d6..7aa430b 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageSubProVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/HomePageSubProVo.java
@@ -50,4 +50,6 @@ public class HomePageSubProVo {
private String idNumber;
private String daysSinceExit;
+ private String attTime;
+
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/TreeVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/TreeVo.java
new file mode 100644
index 0000000..0a02e68
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/TreeVo.java
@@ -0,0 +1,25 @@
+package com.bonus.bmw.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author 黑子
+ */
+@Data
+public class TreeVo {
+ /**
+ * 主键
+ */
+ private String id;
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 子级菜单
+ */
+ private List childList;
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppMapper.java
index 9bbc689..3530dfb 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppMapper.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppMapper.java
@@ -1,13 +1,17 @@
package com.bonus.bmw.mapper;
-import com.bonus.bmw.domain.po.BmSubContract;
-import com.bonus.bmw.domain.po.PmSubTeamContract;
-import com.bonus.bmw.domain.vo.BmSubContractVo;
+import com.bonus.bmw.domain.vo.TreeVo;
+import com.bonus.system.api.domain.SysUser;
import java.util.List;
public interface AppMapper {
- /**
- * 分包商合同信息列表
- */
+
+ String getMm(SysUser sysUser);
+
+ int updatePassword(SysUser sysUser);
+
+ List getComList(TreeVo vo);
+
+ List getSubComList(TreeVo company);
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppRecognitionMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppRecognitionMapper.java
new file mode 100644
index 0000000..07dfad2
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/AppRecognitionMapper.java
@@ -0,0 +1,35 @@
+package com.bonus.bmw.mapper;
+
+import com.bonus.bmw.domain.dto.BmWorkerEinUserVo;
+
+public interface AppRecognitionMapper {
+
+
+ /**
+ * 获取今日是否已签到
+ * @param vo
+ * @return
+ */
+ Integer getTodayIsExit(BmWorkerEinUserVo vo);
+
+ /**
+ * 插入签到人员信息
+ * @param vo
+ * @return
+ */
+ void insertAttPerson(BmWorkerEinUserVo vo);
+
+ /**
+ * 插入签到人员记录
+ * @param vo
+ * @return
+ */
+ void insertAttRecord(BmWorkerEinUserVo vo);
+
+ /**
+ * 获取今日是否已签退
+ * @param vo
+ * @return
+ */
+ BmWorkerEinUserVo getOnUserInfoByIdNumber(String idNumber);
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java
index bc39337..211b52c 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java
@@ -59,4 +59,12 @@ public interface BmWorkerWageCardMapper {
* @return object by id
*/
BmWorkerWageCard selectByPrimaryKey(Integer id);
+
+ /**
+ * delete by primary key
+ *
+ * @param id primary key
+ * @return deleteCount
+ */
+ void deleteByWorkerId(Integer workerId);
}
\ No newline at end of file
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppRecognitionService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppRecognitionService.java
new file mode 100644
index 0000000..7d99f4f
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppRecognitionService.java
@@ -0,0 +1,21 @@
+package com.bonus.bmw.service;
+
+import com.bonus.bmw.domain.dto.AppFileDto;
+import com.bonus.bmw.domain.po.FaceRecognitionBean;
+import com.bonus.bmw.domain.vo.TreeVo;
+import com.bonus.common.core.domain.R;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.system.api.domain.SysFile;
+import com.bonus.system.api.domain.SysUser;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface AppRecognitionService {
+
+ R uploadFaceRecognition(MultipartFile facePhoto, FaceRecognitionBean bean);
+
+ R getFaceRecognition(MultipartFile facePhoto);
+
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppService.java
index 28a48fd..cbd0373 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppService.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/AppService.java
@@ -3,6 +3,9 @@ package com.bonus.bmw.service;
import com.bonus.bmw.domain.dto.FileBasicMsgDto;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.vo.BmSubContractVo;
+import com.bonus.bmw.domain.vo.TreeVo;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.system.api.domain.SysUser;
import java.util.List;
import java.util.Map;
@@ -10,4 +13,20 @@ import java.util.Map;
public interface AppService {
+ /**
+ * 旧手机号校验
+ * @param sysUser
+ * @return
+ */
+ AjaxResult validatePassword(SysUser sysUser);
+
+ /**
+ * 新密码修改
+ * @param sysUser
+ * @return
+ */
+ AjaxResult updatePassword(SysUser sysUser);
+
+
+ AjaxResult getComWorkerTree(TreeVo vo);
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java
index 7b5b012..714ff36 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java
@@ -64,5 +64,12 @@ public interface BmWorkerWageCardService {
* @return
*/
BmWorkerWageCard selectByPrimaryKey(Integer id);
+
+ /**
+ * 删除人员工资卡
+ * @param id
+ * @return
+ */
+ void deleteByWorkerId(Integer workerId);
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppRecognitionServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppRecognitionServiceImpl.java
new file mode 100644
index 0000000..4fed5c5
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppRecognitionServiceImpl.java
@@ -0,0 +1,139 @@
+package com.bonus.bmw.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.bonus.bmw.domain.dto.AppFileDto;
+import com.bonus.bmw.domain.dto.BmWorkerEinUserVo;
+import com.bonus.bmw.domain.po.FaceRecognitionBean;
+import com.bonus.bmw.mapper.AppRecognitionMapper;
+import com.bonus.bmw.service.AppRecognitionService;
+import com.bonus.bmw.utils.FaceStatusCodeReturn;
+import com.bonus.bmw.utils.IpAndPathConfig;
+import com.bonus.common.core.constant.Constants;
+import com.bonus.common.core.domain.R;
+import com.bonus.common.core.utils.DateUtils;
+import com.bonus.common.core.utils.StringUtils;
+import com.bonus.common.core.utils.file.FileUtils;
+import com.bonus.common.core.utils.json.FastJsonHelper;
+import com.bonus.system.api.model.UploadFileVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author 马三炮
+ * @date 2025/8/14
+ */
+@Service
+@Slf4j
+public class AppRecognitionServiceImpl implements AppRecognitionService {
+
+ @Resource
+ private AppRecognitionMapper appMapper;
+
+ @Autowired
+ private FileUploadUtils fileUploadUtils;
+
+ /**
+ * 人脸识别-人脸照片采集入库
+ * @param facePhoto
+ * @param bean
+ * @return
+ */
+ @Override
+ public R uploadFaceRecognition(MultipartFile facePhoto, FaceRecognitionBean bean) {
+ try {
+ // 1. 获取文件字节数组
+ byte[] bytes = facePhoto.getBytes();
+ // 2. 使用 Base64 编码
+ String fileBase64 = Base64.getEncoder().encodeToString(bytes);
+ bean.setImg(fileBase64);
+ String body = HttpUtil.post(IpAndPathConfig.getFaceRecognitionUrl() + "/updatedb",
+ FastJsonHelper.beanToJsonStr(bean));
+ log.error(body);
+ JSONObject jsonObject = FastJsonHelper.jsonStrToJsonObj(body);
+ String code = jsonObject.getString("code");
+ return body.contains("30002") ? R.ok()
+ : R.fail(FaceStatusCodeReturn.faceStatusCodeReturn(Integer.parseInt(code)));
+ } catch (Exception e) {
+ log.error("上传文件失败", e);
+ return R.fail(e.getMessage());
+ }
+ }
+
+ @Override
+ public R getFaceRecognition(MultipartFile facePhoto) {
+ try {
+ // 1. 获取文件字节数组
+ byte[] bytes = facePhoto.getBytes();
+ // 2. 使用 Base64 编码
+ String fileBase64 = Base64.getEncoder().encodeToString(bytes);
+ String body = HttpUtil.post(IpAndPathConfig.getFaceRecognitionUrl() + "/facerecognition",
+ FastJsonHelper.beanToJsonStr(new FaceRecognitionBean(fileBase64)));
+ log.error(body);
+ JSONObject jsonObject = FastJsonHelper.jsonStrToJsonObj(body);
+ String code = jsonObject.getString("code");
+ AppFileDto sysFile = new AppFileDto();
+ if(!"30000".equals(code)){
+ sysFile.setFace(false);
+ }else{
+ String data = jsonObject.getString("data");
+ JSONArray jsonArray = FastJsonHelper.jsonArrStrToJsonArr(data);
+ String idNumber = (String) jsonArray.get(0);
+ sysFile.setFace(true);
+ // 1. 获取用户信息
+ BmWorkerEinUserVo vo = appMapper.getOnUserInfoByIdNumber(idNumber);
+ if(vo != null && vo.getId() != null){
+ saveAttData(vo,facePhoto);
+ }else {
+ return R.fail("人脸识别成功,但未找到入场人员信息");
+ }
+ }
+ return !"30000".equals(code) ? R.fail(FaceStatusCodeReturn.faceStatusCodeReturn(Integer.parseInt(code)))
+ :R.ok();
+ } catch (Exception e) {
+ log.error("上传文件失败", e);
+ return R.fail(e.getMessage());
+ }
+ }
+
+ public String saveAttData(BmWorkerEinUserVo vo,MultipartFile facePhoto) {
+ vo.setAttTime(DateUtil.now());
+ vo.setDevCode("app打卡");
+ vo.setDevName("app打卡设备");
+ String id= StringUtils.randomUUID();
+ vo.setId(id);
+ vo.setAttMonth(DateUtils.getCurrentMonth());
+ vo.setAttDay(DateUtils.getDate());
+ vo.setCreateTime(DateUtils.getTime());
+ Integer num= appMapper.getTodayIsExit(vo);
+ //每日新增一条考勤信息
+ if(num==null || num ==0){
+ UploadFileVo uploadFileVo=fileUploadUtils.uploadFile(facePhoto, Constants.FILE_UPLOAD_ATT_PHOTO, vo.getId(),"APP考勤打卡照片","app_att",null);
+ if(uploadFileVo!=null){
+ vo.setImage(uploadFileVo.getPath());
+ appMapper.insertAttPerson(vo);
+ }
+ }
+ UploadFileVo uploadFileVo=fileUploadUtils.uploadFile(facePhoto, Constants.FILE_UPLOAD_ATT_RECORD_PHOTO, vo.getId(),"APP考勤打卡照片","app_att",null);
+ if(uploadFileVo!=null){
+ vo.setImage(uploadFileVo.getPath());
+ appMapper.insertAttRecord(vo);
+ }
+ return id;
+ }
+
+
+
+
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppServiceImpl.java
index e2647a9..ff9780e 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/AppServiceImpl.java
@@ -5,6 +5,7 @@ import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.po.PmSubTeamContract;
import com.bonus.bmw.domain.vo.BmSubContractVo;
+import com.bonus.bmw.domain.vo.TreeVo;
import com.bonus.bmw.mapper.AppMapper;
import com.bonus.bmw.mapper.BmSubContractMapper;
import com.bonus.bmw.service.AppService;
@@ -12,7 +13,9 @@ import com.bonus.bmw.service.BmSubContractService;
import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
+import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
+import com.bonus.system.api.domain.SysUser;
import com.bonus.system.api.model.UploadFileVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -37,4 +40,42 @@ public class AppServiceImpl implements AppService {
private AppMapper appMapper;
+ @Override
+ public AjaxResult validatePassword(SysUser sysUser) {
+ String mm = appMapper.getMm(sysUser);
+ if (StringUtils.isNotEmpty(mm)) {
+ if (mm.equals(SecurityUtils.encryptPassword(sysUser.getOldPassword()))) {
+ return AjaxResult.success();
+ }
+ }
+ return AjaxResult.error("密码错误");
+ }
+
+ @Override
+ public AjaxResult updatePassword(SysUser sysUser) {
+ String mm = appMapper.getMm(sysUser);
+ if (StringUtils.isNotEmpty(mm)) {
+ if (mm.equals(SecurityUtils.encryptPassword(sysUser.getOldPassword()))) {
+ sysUser.setPassword(SecurityUtils.encryptPassword(sysUser.getPassword()));
+ int i = appMapper.updatePassword(sysUser);
+ if (i > 0) {
+ return AjaxResult.success();
+ }else{
+ return AjaxResult.error("修改失败");
+ }
+ }
+ }
+ return AjaxResult.error("密码错误");
+ }
+
+ @Override
+ public AjaxResult getComWorkerTree(TreeVo vo) {
+ //先查公司
+ List companyList = appMapper.getComList(vo);
+ companyList.forEach(company -> {
+ List subComList = appMapper.getSubComList(company);
+ company.setChildList(subComList);
+ });
+ return null;
+ }
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java
index 79dd608..2a185b0 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerBlackServiceImpl.java
@@ -82,19 +82,24 @@ public class BmWorkerBlackServiceImpl implements BmWorkerBlackService{
// 添加员工时,判断员工编号是否已存在
BmWorkerBlack w = mapper.getWorkerBlackByNumber(worker.getIdNumber());
if (StringUtils.isNull(w)) {
- BeanValidators.validateWithException(validator, worker);
- worker.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
- int isRemove = 0;
- if(!"永久".equals(worker.getEndTime())){
- boolean beforeToday = isBeforeToday(worker.getEndTime());
- if(beforeToday){
- isRemove = 2;
+ if(StringUtils.isNull(worker.getIdNumber())){
+ BeanValidators.validateWithException(validator, worker);
+ worker.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
+ int isRemove = 0;
+ if(!"永久".equals(worker.getEndTime())){
+ boolean beforeToday = isBeforeToday(worker.getEndTime());
+ if(beforeToday){
+ isRemove = 2;
+ }
}
+ worker.setIsRemove(isRemove);
+ mapper.insert(worker);
+ successNum++;
+ successMsg.append("
").append(successNum).append("、失信人员信息 ").append(worker.getName()).append(" 导入成功");
+ }else {
+ failureNum++;
+ failureMsg.append("
").append(failureNum).append("、失信人员信息 ").append("必要字段不能为空");
}
- worker.setIsRemove(isRemove);
- mapper.insert(worker);
- successNum++;
- successMsg.append("
").append(successNum).append("、失信人员信息 ").append(worker.getName()).append(" 导入成功");
} else if (isUpdateSupport) {
BeanValidators.validateWithException(validator, worker);
worker.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java
index fb57924..d666e96 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java
@@ -157,6 +157,11 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService {
return wageCard;
}
+ @Override
+ public void deleteByWorkerId(Integer workerId) {
+ mapper.deleteByWorkerId(workerId);
+ }
+
private int selectWageCardAndContract(Integer id) {
return mapper.selectWageCardAndContract(id);
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageSubServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageSubServiceImpl.java
index 4bf2f72..f654993 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageSubServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/HomePageSubServiceImpl.java
@@ -68,7 +68,10 @@ public class HomePageSubServiceImpl implements HomePageSubService {
List contractFile = fileUploadUtils.getFileList("", worker.getContractId().toString(), Constants.FILE_UPLOAD_CONTRACT, "");
worker.setFiles(contractFile);
}
-
+ if (worker.getWageCardId() != null) {
+ List wageFile = fileUploadUtils.getFileList("", worker.getWageCardId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, "");
+ worker.setWageFiles(wageFile);
+ }
return AjaxResult.success("查询成功", worker);
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
index d1b684e..3514f06 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java
@@ -64,6 +64,8 @@ public class PmWorkerServiceImpl implements PmWorkerService{
@Override
public int deleteByPrimaryKey(Integer id) {
+ //删除工资卡
+ wageCardService.deleteByWorkerId(id);
return mapper.deleteByPrimaryKey(id);
}
@@ -266,7 +268,7 @@ public class PmWorkerServiceImpl implements PmWorkerService{
try {
//是否以前人员,但被删除了
PmWorker delWorker = mapper.getWorkerByNumber(worker.getIdNumber(),0);
- if(delWorker.getId() != null){
+ if(delWorker != null && delWorker.getId() != null){
mapper.updateIsActiveById(delWorker.getId(),1);
BeanValidators.validateWithException(validator, worker);
worker.setId(delWorker.getId());
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/FaceStatusCodeReturn.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/FaceStatusCodeReturn.java
new file mode 100644
index 0000000..f9c3b3c
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/FaceStatusCodeReturn.java
@@ -0,0 +1,78 @@
+package com.bonus.bmw.utils;
+
+/**
+ * 人脸识别返回结果
+ * @author zys
+ */
+public class FaceStatusCodeReturn {
+
+ public static String faceStatusCodeReturn(int code){
+ String result = "";
+ switch (code) {
+ case 30000:
+ result = "已知个体的人脸识别";
+ break;
+ case 30001:
+ result = "未知个体的人脸识别";
+ break;
+ case 30002:
+ result = "图像处理成功";
+ break;
+ case 30003:
+ result = "没有找到人脸数据库";
+ break;
+ case 30004:
+ result = "文件路径无效";
+ break;
+ case 30005:
+ result = "文件后缀无效";
+ break;
+ case 30006:
+ result = "不支持的输入文件类型;仅支持:base64,URL,本地路径";
+ break;
+ case 30007:
+ result = "不支持的数据库更新类型";
+ break;
+ case 30008:
+ result = "图像中发现多张人脸";
+ break;
+ case 30009:
+ result = "光照条件差影响图像质量";
+ break;
+ case 30010:
+ result = "人脸部分在画面外,向左或向右移动";
+ break;
+ case 30011:
+ result = "人脸部分在画面外,向上或向下移动";
+ break;
+ case 30012:
+ result = "图像中人脸向右旋转";
+ break;
+ case 30013:
+ result = "图像中人脸向左旋转";
+ break;
+ case 30014:
+ result = "图像中人脸向上旋转";
+ break;
+ case 30015:
+ result = "图像中人脸向下旋转径";
+ break;
+ case 30016:
+ result = "图像中人脸分辨率低";
+ break;
+ case 30017:
+ result = "图像中人脸清晰度差";
+ break;
+ case 30018:
+ result = "图像中未检测到人脸";
+ break;
+ case 30019:
+ result = "身份已存在";
+ break;
+ default:
+ result = "";
+ }
+ return result;
+ }
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/IpAndPathConfig.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/IpAndPathConfig.java
new file mode 100644
index 0000000..24d7f5a
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/utils/IpAndPathConfig.java
@@ -0,0 +1,36 @@
+package com.bonus.bmw.utils;
+
+/**
+ * @author fly
+ * 外部接口地址
+ */
+public class IpAndPathConfig {
+
+ /**
+ * 当前环境
+ * 其他 本地
+ * test 测试
+ * prod 固定
+ */
+ public static String environment = "test";
+
+ /**
+ * 人脸检测后端相关
+ */
+ public static String faceTestUrl = "http://192.168.0.14:1909/file";
+ public static String faceProdUrl = "http://112.29.103.165:1617/file";
+
+ /**
+ * 相关配置
+ */
+ public static String getFaceRecognitionUrl(){
+ if(environment.contains("prod")){
+ return faceProdUrl;
+ }else if(environment.contains("test")){
+ return faceTestUrl;
+ }else{
+ return faceTestUrl;
+ }
+ }
+
+}
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppMapper.xml
index 43aa2e2..efd90d7 100644
--- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppMapper.xml
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppMapper.xml
@@ -2,4 +2,22 @@
+
+
+
+ update sys_user set password = #{password} where user_name = #{phonenumber}
+
+
+
+
+
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppRecognitionMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppRecognitionMapper.xml
new file mode 100644
index 0000000..3128418
--- /dev/null
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/AppRecognitionMapper.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+ insert into bm_att_person(
+ id, worker_id, device_code,dev_name, id_number, name, pro_id, pro_name, sub_id, sub_name, team_id, team_name,org_id, org_name,
+ att_month, att_day, daily_wage, att_time, att_photo, is_repair, create_time, is_active,contract_id
+ )values (#{id},#{userId},#{devCode},#{devName},#{idNumber},#{userName},#{proId},#{proName},#{subId},#{subName},#{teamId},#{teamName},#{orgId},#{orgName},
+ #{attMonth},#{attDay},#{dailyWage},#{attTime},#{image},#{isRepair},#{createTime},1,#{contractId}
+ )
+
+
+
+ insert into bm_att_record(
+ id, worker_id, device_code, id_number, dev_name,name, pro_id, pro_name, sub_id, sub_name, team_id, team_name,org_id, org_name,
+ att_month, att_day, daily_wage, att_time, att_photo, is_repair, create_time, is_active,contract_id
+ )values (#{id},#{userId},#{devCode},#{idNumber},#{devName},#{userName},#{proId},#{proName},#{subId},#{subName},#{teamId},#{teamName},#{orgId},#{orgName},
+ #{attMonth},#{attDay},#{dailyWage},#{attTime},#{image},#{isRepair},#{createTime},1,#{contractId}
+ )
+
+
+
+
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml
index 09fb9dc..88a4134 100644
--- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml
@@ -91,7 +91,7 @@
AND pw.id_number LIKE CONCAT('%', #{idNumber}, '%')
- AND bwwc.worker_id LIKE CONCAT('%', #{workerId}, '%')
+ AND bwwc.worker_id = #{workerId}
@@ -145,4 +145,9 @@
WHERE
bwwc.id = #{id}
+
+
+ delete from bm_worker_wage_card
+ where worker_id = #{workerId}
+
\ No newline at end of file
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml
index ffda849..b14321b 100644
--- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/HomePageSubMapper.xml
@@ -34,6 +34,9 @@
+
+
+