diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java new file mode 100644 index 0000000..64cc099 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerAttController.java @@ -0,0 +1,134 @@ +package com.bonus.bmw.controller; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.InnerAuth; +import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** +* 考勤统计 +* +* @author fly +*/ +@RestController +@RequestMapping("/workerLight") +public class BmWorkerAttController extends BaseController { +/** +* 服务对象 +*/ + @Autowired + private BmWorkerAttService service; + + /** + * 查询列表-分公司 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getSubComAttList") + @SysLog(title = "考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "分公司考勤统计") + public TableDataInfo getSubComAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getSubComAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + + /** + * 查询列表-工程 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getProAttList") + @SysLog(title = "工程考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "工程考勤统计") + public TableDataInfo getProAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getProAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 班组考勤统计-工程 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getTeamAttList") + @SysLog(title = "班组考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "班组考勤统计") + public TableDataInfo getTeamAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getTeamAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 查询列表-班组下人员列表 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getWorkerAttList") + @SysLog(title = "班组人员考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "班组人员考勤统计") + public TableDataInfo getWorkerAttList(BmWorkerAtt o) { + try { + startPage(); + List list = service.getWorkerAttList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + /** + * 考勤统计列表-人员考勤明细 + * @param o + * @return + * , requiresPermissions = @RequiresPermissions("system:workerLight:list") + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false)) + @GetMapping("/getWorkerAttListById") + @SysLog(title = "单人人员考勤统计", businessType = OperaType.QUERY, logType = 0, module = "施工人员->考勤管理->考勤统计", details = "单人人员考勤统计") + public TableDataInfo getWorkerAttListById(BmWorkerAtt o) { + try { + startPage(); + List list = service.getWorkerAttListById(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java index 36c29de..55ac88e 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/BmWorkerWageCardController.java @@ -4,6 +4,7 @@ import com.bonus.bmw.domain.dto.FileBasicMsgDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.BmWorkerContract; import com.bonus.bmw.domain.vo.BmWorkerWageCard; +import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.bmw.service.BmWorkerWageCardService; import com.bonus.common.core.utils.json.FastJsonHelper; import com.bonus.common.core.utils.poi.ExcelUtil; @@ -57,11 +58,27 @@ public class BmWorkerWageCardController extends BaseController { return getDataTableError(new ArrayList<>()); } + //, requiresPermissions = @RequiresPermissions("system:wageCard:edit") + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) + @PostMapping("/select/{id}") + @SysLog(title = "工资卡管理", businessType = OperaType.QUERY, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "查看工资卡") + public AjaxResult select(@PathVariable("id") Integer id) { + try { + AjaxResult ajax = AjaxResult.success(); + BmWorkerWageCard worker = service.selectByPrimaryKey(id); + ajax.put("data", worker); + return ajax; + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + //, requiresPermissions = @RequiresPermissions("system:wageCard:edit") @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) @PostMapping("/edit") @SysLog(title = "工资卡管理", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->红绿灯管理->工资卡管理", details = "修改工资卡") - public AjaxResult edit(@RequestParam(value = "files") MultipartFile[] files, @RequestParam(value = "fileMsg") String fileMsg, @RequestParam(value = "params")String params) { + public AjaxResult edit(@RequestParam(value = "files",required = false) MultipartFile[] files, @RequestParam(value = "fileMsg",required = false) String fileMsg, @RequestParam(value = "params")String params) { try { List listFile = FastJsonHelper.jsonArrStrToBeanList(fileMsg, WebFileDto.class); BmWorkerWageCard o = FastJsonHelper.jsonStrToBean(params, BmWorkerWageCard.class); diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java index 20e13e9..426ac51 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java @@ -107,7 +107,7 @@ public class PmWorkerController extends BaseController { @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth) @PostMapping("/edit") @SysLog(title = "人员入场管理", businessType = OperaType.UPDATE, logType = 0, module = "施工人员->出入场管理->人员入场管理", details = "修改人员入场") - public AjaxResult edit(@RequestParam(value = "files") MultipartFile[] files,@RequestParam(value = "fileMsg") String fileMsg, @RequestParam(value = "params")String params) { + public AjaxResult edit(@RequestParam(value = "files",required = false) MultipartFile[] files,@RequestParam(value = "fileMsg",required = false) String fileMsg, @RequestParam(value = "params")String params) { try { List listFile = FastJsonHelper.jsonArrStrToBeanList(fileMsg, WebFileDto.class); // 验证对应关系 diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java new file mode 100644 index 0000000..ef4ee65 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerAtt.java @@ -0,0 +1,158 @@ +package com.bonus.bmw.domain.vo; + +import lombok.Data; + +/** + * 所有在场人员实时信息表-离场就删除 + */ +@Data +public class BmWorkerAtt { + + /** + * 工程 + */ + private String proName; + + /** + * 工程id + */ + private Integer proId; + + /** + * 班组 + */ + private String teamName; + + /** + * 班组id + */ + private Integer teamId; + + /** + * 分包 + */ + private String subName; + + /** + * 分包id + */ + private Integer subId; + + /** + * 工种 + */ + private String postName; + + /** + * 工种id + */ + private Integer postId; + + /** + * 分公司 + */ + private String subComName; + + /** + * 分公司id + */ + private String subComId; + + /** + * 姓名 + */ + private String name; + /** + * 身份证号 + */ + private String idNumber; + + /** + * 在建工程数量 + */ + private Integer buildProNum; + + /** + * 完工工程数量 + */ + private Integer completedProNum; + + /** + * 筹建工程数量 + */ + private Integer preProNum; + + /** + * 分包数量 + */ + private Integer subNum; + + /** + * 班组数 + */ + private Integer teamNum; + + /** + * 在场人员数量 + */ + private Integer einNum; + + /** + * 考勤人数 + */ + private Integer attNum; + + /** + * 黄灯数量 + */ + private String yellowNum; + /** + * 绿灯数量 + */ + private String greenNum; + + + /** + * 日期 + */ + private String currentDay; + + /** + * 考勤时间 + */ + private String startDate; + /** + * 考勤时间 + */ + private String endDate; + + private Integer workerId; + + private Integer notAttNum; + + /** + * 入场时间 + */ + private String einDay; + /** + * 考勤日期 + */ + private String attDay; + /** + * 考勤状态 + */ + private Integer isAtt; + /** + * 是否补卡 + */ + private String isRepair; + /** + * 设备名称 + */ + private String deviceName; + /** + * 考勤时间 + */ + private String attTime; + +} \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java index 25f0d0a..cd2856e 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/BmWorkerWageCard.java @@ -81,4 +81,14 @@ public class BmWorkerWageCard { * 工资卡照片 */ private List files; + /** + * 是否上传 0未上传 1已上传 + */ + private String isUpload; + + /** + * 照片id + */ + private String delIds; + } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java index 18935b4..5d0b8f2 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorker.java @@ -1,8 +1,10 @@ package com.bonus.bmw.domain.vo; import java.util.Date; +import java.util.List; import com.bonus.common.core.annotation.Excel; +import com.bonus.system.api.model.UploadFileVo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; @@ -179,4 +181,10 @@ public class PmWorker { * 离职时间间隔 */ private String daysSinceExit; + + /** + * 人脸照片 + */ + private List files; + } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java new file mode 100644 index 0000000..ba240f4 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerAttMapper.java @@ -0,0 +1,39 @@ +package com.bonus.bmw.mapper; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.domain.vo.BmWorkerLight; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface BmWorkerAttMapper { + + List getSubComAttList(BmWorkerAtt o); + + List getProAttList(BmWorkerAtt o); + + List getWorkerAttList(BmWorkerAtt o); + + List getTeamAttList(BmWorkerAtt o); + + /** + * 根据查询区间获取人员最新基础信息(班组分包等) + * @param o + * @return + */ + List getWorkerEinMsgListByDateRange(BmWorkerAtt o); + /** + * 根据查询区间获取人员考勤天数 + * @param o + * @return + */ + List getWorkerAttDayNumByDateRange(BmWorkerAtt o); + + /** + * 根据查询区间获取单个人员考勤记录 + * @param o + * @return + */ + List getWorkerAttListById(BmWorkerAtt o); +} \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java index b3ef006..bc39337 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/BmWorkerWageCardMapper.java @@ -51,4 +51,12 @@ public interface BmWorkerWageCardMapper { int selectWageCardAndContract(Integer id); void updateEinMsgByWorkerId(@Param("workerId") Integer id,@Param("lightStatus") Integer lightStatus,@Param("lightDate") String lightDate); + + /** + * select by primary key + * + * @param id primary key + * @return object by id + */ + BmWorkerWageCard selectByPrimaryKey(Integer id); } \ No newline at end of file diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java new file mode 100644 index 0000000..aea397e --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerAttService.java @@ -0,0 +1,43 @@ +package com.bonus.bmw.service; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; + +import java.util.List; + +public interface BmWorkerAttService { + + /** + * 分公司考勤统计 + * @param o + * @return + */ + List getSubComAttList(BmWorkerAtt o); + + /** + * 工程考勤统计 + * @param o + * @return + */ + List getProAttList(BmWorkerAtt o); + + /** + * 人员考勤统计 + * @param o + * @return + */ + List getWorkerAttList(BmWorkerAtt o); + + /** + * 班组考勤统计 + * @param o + * @return + */ + List getTeamAttList(BmWorkerAtt o); + + /** + * 单人人员考勤统计 + * @param o + * @return + */ + List getWorkerAttListById(BmWorkerAtt o); +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java index 35706b5..7b5b012 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/BmWorkerWageCardService.java @@ -2,6 +2,7 @@ package com.bonus.bmw.service; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.BmWorkerWageCard; +import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.common.core.web.domain.AjaxResult; import java.util.List; @@ -56,5 +57,12 @@ public interface BmWorkerWageCardService { * @return */ AjaxResult lookFileByPrimaryKey(Integer id); + + /** + * 查询工资卡信息 + * @param id + * @return + */ + BmWorkerWageCard selectByPrimaryKey(Integer id); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java new file mode 100644 index 0000000..7fb48d0 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerAttServiceImpl.java @@ -0,0 +1,134 @@ +package com.bonus.bmw.service.impl; + +import com.bonus.bmw.domain.vo.BmWorkerAtt; +import com.bonus.bmw.mapper.BmWorkerAttMapper; +import com.bonus.bmw.mapper.BmWorkerAttMapper; +import com.bonus.bmw.service.BmWorkerAttService; +import com.bonus.bmw.service.BmWorkerAttService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class BmWorkerAttServiceImpl implements BmWorkerAttService { + + @Autowired + private BmWorkerAttMapper mapper; + + /** + * 分公司考勤统计 + * @param o + * @return + */ + @Override + public List getSubComAttList(BmWorkerAtt o) { + return mapper.getSubComAttList(o); + } + + @Override + public List getProAttList(BmWorkerAtt o) { + return mapper.getProAttList(o); + } + + @Override + public List getTeamAttList(BmWorkerAtt o) { + return mapper.getTeamAttList(o); + } + + @Override + public List getWorkerAttListById(BmWorkerAtt o) { + List list = mapper.getWorkerAttListById(o); + // 如果列表为空,给它一个空的列表 + if (list == null) { + list = new ArrayList<>(); + } + // 如果没有指定日期范围,则直接返回原始列表 + if (o.getStartDate() == null || o.getEndDate() == null) { + return list; + } + LocalDate startDate = LocalDate.parse(o.getStartDate()); + LocalDate endDate = LocalDate.parse(o.getEndDate()); + + // 生成日期范围内的所有日期 (Java 8 兼容方式) + List dateRange = new ArrayList<>(); + LocalDate currentDate = startDate; + while (!currentDate.isAfter(endDate)) { + dateRange.add(currentDate); + currentDate = currentDate.plusDays(1); + } + + // 补全缺失的日期 + Map existingDataMap = list.stream() + .filter(item -> item.getEinDay() != null) + .collect(Collectors.toMap( + item -> LocalDate.parse(item.getEinDay()), + item -> item, + (existing, replacement) -> existing + )); + +// List finalList = list; + return dateRange.stream() + .map(date -> { + if (existingDataMap.containsKey(date)) { + return existingDataMap.get(date); + } else { + // 创建缺失日期的默认数据 + BmWorkerAtt defaultAtt = new BmWorkerAtt(); + // 复制必要字段 +// if (!finalList.isEmpty()) { +// BmWorkerAtt source = finalList.get(0); +// defaultAtt.setWorkerId(source.getWorkerId()); +// } + defaultAtt.setEinDay(date.toString()); + defaultAtt.setIsAtt(3); + return defaultAtt; + } + }) + .sorted((a, b) -> b.getEinDay().compareTo(a.getEinDay())) // 倒序排序 + .collect(Collectors.toList()); + } + + + /** + * 人员考勤统计 + * @param o + * @return + */ + @Override + public List getWorkerAttList(BmWorkerAtt o) { + //1.查询 工程 班组 时间区间 姓名 身份证号码 + //根据区间产讯处最新的人员基础数据 + List list = mapper.getWorkerEinMsgListByDateRange(o); + //查询考勤天数 根据 时间区间 工程 班组 查询 + List listAtt = mapper.getWorkerAttDayNumByDateRange(o); + // 1. 安全地将 listAtt 转为 Map + Map attNumMap = listAtt.stream() + .filter(Objects::nonNull) // 过滤 null 对象 + .filter(item -> item.getWorkerId() != null) // 确保 workerId 不为 null + .collect(Collectors.toMap( + BmWorkerAtt::getWorkerId, // key: workerId + BmWorkerAtt::getAttNum, // value: attNum + (existing, replacement) -> replacement // 如果 key 重复,使用新的值(后者) + )); + long daysBetween = getDaysBetween(o.getStartDate(), o.getEndDate()); + // 2. 遍历 list,根据 workerId 填充 attNum + list.forEach(item -> { + Integer attNum = attNumMap.get(item.getWorkerId()); + item.setAttNum(attNum != null ? attNum : 0); // 未匹配上则设为 0 + item.setNotAttNum((int) (daysBetween - item.getAttNum())); + }); + return list; + } + + public static long getDaysBetween(String startDateStr, String endDateStr) { + LocalDate start = LocalDate.parse(startDateStr); + LocalDate end = LocalDate.parse(endDateStr); + // 计算两个日期之间的天数差(包含边界) + return ChronoUnit.DAYS.between(start, end) + 1; + } + +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java index 8087b60..791aa28 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerContractServiceImpl.java @@ -102,7 +102,12 @@ public class BmWorkerContractServiceImpl implements BmWorkerContractService{ @Override public BmWorkerContract selectContractListByWorkerIdAndValid(BmWorkerContract o) { - return mapper.selectContractListByWorkerIdAndValid(o); + BmWorkerContract workerContract = mapper.selectContractListByWorkerIdAndValid(o); + if(workerContract != null){ + List contractFile = fileUploadUtils.getFileList("", workerContract.getId().toString(), Constants.FILE_UPLOAD_CONTRACT, ""); + workerContract.setFiles(contractFile); + } + return workerContract; } @Override diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java index ac2fe1f..110f0ef 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/BmWorkerWageCardServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.bonus.bmw.domain.dto.FileBasicMsgDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.BmWorkerWageCard; +import com.bonus.bmw.domain.vo.PmWorker; import com.bonus.bmw.mapper.BmWorkerWageCardMapper; import com.bonus.bmw.service.BmWorkerWageCardService; import com.bonus.common.core.constant.Constants; @@ -39,17 +40,23 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { public int updateByPrimaryKey(BmWorkerWageCard record, List listFile) { //存在则删除后新增,不存在则新增 if(record.getId() != null){ - log.info("存在则删除后新增,不存在则新增"); - //删除工资卡图片 删除minio文件 - fileUploadUtils.delFileListById("", record.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD,""); - //组装数据 - MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; - String[] type = new String[listFile.size()]; - for (int i = 0; i < listFile.size(); i++) { - workerFiles[i] = listFile.get(i).getFile(); - type[i] = listFile.get(i).getType(); + if(record.getDelIds() != null){ + //修改时删除部分图片 + String[] split = record.getDelIds().split(","); + for (String s : split) { + fileUploadUtils.delFileListById(s,"",Constants.FILE_UPLOAD_WAGE_CARD, ""); + } + } + if(!listFile.isEmpty()){ + //组装数据 + MultipartFile[] workerFiles = new MultipartFile[listFile.size()]; + String[] type = new String[listFile.size()]; + for (int i = 0; i < listFile.size(); i++) { + workerFiles[i] = listFile.get(i).getFile(); + type[i] = listFile.get(i).getType(); + } + List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WAGE_CARD, record.getId().toString(), type,"", ""); } - List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WAGE_CARD, record.getId().toString(), type,"", ""); updateByPrimaryKeySelective(record); return 1; }else{ @@ -97,7 +104,11 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { @Override public BmWorkerWageCard selectWageCardByWorkerId(BmWorkerWageCard o) { - return mapper.selectWageCardByWorkerId(o); + BmWorkerWageCard bmWorkerWageCard = mapper.selectWageCardByWorkerId(o); + if(bmWorkerWageCard != null){ + bmWorkerWageCard.setFiles(fileUploadUtils.getFileList("", bmWorkerWageCard.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, "")); + } + return bmWorkerWageCard; } /** @@ -136,6 +147,16 @@ public class BmWorkerWageCardServiceImpl implements BmWorkerWageCardService { return AjaxResult.success(contractFile); } + @Override + public BmWorkerWageCard selectByPrimaryKey(Integer id) { + BmWorkerWageCard wageCard= mapper.selectByPrimaryKey(id); + if(wageCard != null){ + List contractFile = fileUploadUtils.getFileList("", wageCard.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, ""); + wageCard.setFiles(contractFile); + } + return wageCard; + } + private int selectWageCardAndContract(Integer id) { return mapper.selectWageCardAndContract(id); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java index 793a300..b03683b 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java @@ -58,8 +58,8 @@ public class PmWorkerServiceImpl implements PmWorkerService{ record.setCreateUser(SecurityUtils.getUsername()); int insert = mapper.insert(record); if(insert > 0){ - List collect = fileMsg.stream().filter(data -> "人脸".equals(data.getName())).collect(Collectors.toList()); - //组装数据 + List collect = fileMsg.stream().filter(data -> "faceImg".equals(data.getName())).collect(Collectors.toList()); + //组装数据 MultipartFile[] workerFiles = new MultipartFile[collect.size()]; String[] type = new String[collect.size()]; for (int i = 0; i < collect.size(); i++) { @@ -98,13 +98,13 @@ public class PmWorkerServiceImpl implements PmWorkerService{ if(bmWorkerWageCard != null && StringUtil.isNotEmpty(bmWorkerWageCard.getBankCardCode())){ bmWorkerWageCard.setCreateUser(SecurityUtils.getUsername()); bmWorkerWageCard.setWorkerId(record.getId()); - List collect = fileMsg.stream().filter(data -> "工资卡".equals(data.getName())).collect(Collectors.toList()); + List collect = fileMsg.stream().filter(data -> "wageCard".equals(data.getName())).collect(Collectors.toList()); wageCardService.updateByPrimaryKey(bmWorkerWageCard,collect); } if(bmWorkerContract != null && StringUtil.isNotEmpty(bmWorkerContract.getContractCode())){ bmWorkerContract.setCreateUser(SecurityUtils.getUsername()); bmWorkerContract.setWorkerId(record.getId()); - List collect = fileMsg.stream().filter(data -> "合同".equals(data.getName())).collect(Collectors.toList()); + List collect = fileMsg.stream().filter(data -> "contract".equals(data.getName())).collect(Collectors.toList()); contractService.updateByPrimaryKey(bmWorkerContract,collect); record.setContractId(bmWorkerContract.getId()); } @@ -114,6 +114,9 @@ public class PmWorkerServiceImpl implements PmWorkerService{ public PmWorker selectByPrimaryKey(Integer id) { //人员数据 PmWorker worker = mapper.selectByPrimaryKey(id); + if(worker != null){ + worker.setFiles(fileUploadUtils.getFileList("", worker.getId().toString(), Constants.FILE_UPLOAD_WORKER, "")); + } //查询工资卡 数据 BmWorkerWageCard wageCard = new BmWorkerWageCard(); wageCard.setWorkerId(id); @@ -140,6 +143,20 @@ public class PmWorkerServiceImpl implements PmWorkerService{ //更新基础数据 record.setUpdateUser(SecurityUtils.getUsername()); int update = mapper.updateByPrimaryKey(record); + //人脸照片是否修改 + List collect = fileMsg.stream().filter(data -> "faceImg".equals(data.getName())).collect(Collectors.toList()); + if(!collect.isEmpty()){ + String s = fileUploadUtils.delFileListById("", record.getId().toString(), Constants.FILE_UPLOAD_WORKER, ""); + //组装数据 + MultipartFile[] workerFiles = new MultipartFile[collect.size()]; + String[] type = new String[collect.size()]; + for (int i = 0; i < collect.size(); i++) { + workerFiles[i] = collect.get(i).getFile(); + type[i] = collect.get(i).getType(); + } + //人脸的数据添加 + List uploadFileVos = fileUploadUtils.uploadFile(workerFiles, Constants.FILE_UPLOAD_WORKER, record.getId().toString(), type,"", ""); + } //更新入场记录最新记录标识 再入场,清除最新标识 mapper.updateEinRecordLast(record.getId()); //已经入过场了 diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml new file mode 100644 index 0000000..56e72a6 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerAttMapper.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml index e1337c9..09fb9dc 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/BmWorkerWageCardMapper.xml @@ -13,6 +13,7 @@ + id, worker_id, bank_card_code, bank_name, bank_branch_name, create_user, update_user @@ -38,7 +39,8 @@ bwwc.bank_card_code, bwwc.bank_name, bwwc.bank_branch_name, - bwwc.update_time + bwwc.update_time, + if(bwwc.id is not null, 1, 0) AS is_upload FROM pm_worker pw LEFT JOIN `bm_worker_wage_card` bwwc ON pw.id = bwwc.worker_id @@ -60,6 +62,12 @@ AND bwwc.worker_id LIKE CONCAT('%', #{workerId}, '%') + + AND bwwc.id is not null + + + AND bwwc.id is null + + SELECT + bwwc.id, + bwwc.bank_card_code, + bwwc.bank_name, + bwwc.bank_branch_name + FROM + `bm_worker_wage_card` bwwc + WHERE + bwwc.id = #{id} + \ No newline at end of file