diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/EightMembersVacancyController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/EightMembersVacancyController.java new file mode 100644 index 0000000..6db010b --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/controller/EightMembersVacancyController.java @@ -0,0 +1,65 @@ +package com.bonus.system.dept.controller; + +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.Log; +import com.bonus.common.log.enums.BusinessType; +import com.bonus.common.security.annotation.RequiresPermissions; +import com.bonus.system.dept.entity.EightMembersVacancyVo; +import com.bonus.system.dept.service.EightMembersVacancyService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @className:EightMembersVacancyController + * @author:cwchen + * @date:2025-02-10-13:35 + * @version:1.0 + * @description:八大员缺员兼职查询-controller + */ +@ApiOperation("八大员缺员兼职查询") +@RestController +@RequestMapping("/eightMembersVacancy") +public class EightMembersVacancyController extends BaseController { + + @Resource(name = "EightMembersVacancyService") + private EightMembersVacancyService service; + +// @RequiresPermissions("dept:eightMembers:query") + @ApiOperation("八大员缺员兼职查询-列表查询") + @GetMapping("/getList") + @Log(title = "项目部角色管理->八大员缺员兼职查询->列表查询", businessType = BusinessType.QUERY) + public TableDataInfo getList(EightMembersVacancyVo vo) { + startPage(); + List list = service.getList(vo); + return getDataTable(list); + } + + @ApiOperation("八大员缺员兼职查询-缺员项目部数量详情") + @GetMapping("/getUnderStaffingList") + @Log(title = "项目部角色管理->八大员缺员兼职查询->列表查询->缺员项目部详情", businessType = BusinessType.QUERY) + public TableDataInfo getUnderStaffingList(EightMembersVacancyVo vo) { + List list = service.getUnderStaffingList(vo); + return getDataTable(list); + } + + @ApiOperation("八大员缺员兼职查询-兼职项目部数量详情") + @GetMapping("/getPartTimeList") + @Log(title = "项目部角色管理->八大员缺员兼职查询->列表查询->兼职项目部详情", businessType = BusinessType.QUERY) + public TableDataInfo getPartTimeList(EightMembersVacancyVo vo) { + List list = service.getPartTimeList(vo); + return getDataTable(list); + } + + @ApiOperation("角色下拉选") + @GetMapping("/getRoleList") + public AjaxResult getRoleList() { + return service.getRoleList(); + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/EightMembersVacancyDao.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/EightMembersVacancyDao.java new file mode 100644 index 0000000..1222bd6 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/dao/EightMembersVacancyDao.java @@ -0,0 +1,56 @@ +package com.bonus.system.dept.dao; + +import com.bonus.system.dept.entity.EightMembersVacancyVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * @className:EightMembersVacancyDao + * @author:cwchen + * @date:2025-02-10-13:41 + * @version:1.0 + * @description:八大员缺员兼职-数据库层 + */ +@Repository(value = "EightMembersVacancyDao") +public interface EightMembersVacancyDao { + + /** + * 八大员缺员兼职查询-列表查询 + * @param vo + * @return List + * @author cwchen + * @date 2025/2/10 14:15 + */ + List getList(EightMembersVacancyVo vo); + + /** + * + * @param id 角色id + * @param type 1.缺员项目部数量 2.兼职项目部数量 + * @return Integer + * @author cwchen + * @date 2025/2/10 15:11 + */ + List getNumByType(@Param("id")Long id,@Param("type") int type); + + /** + * 八大员缺员兼职查询-缺员/兼职项目部详情 + * @param list + * @return List + * @author cwchen + * @date 2025/2/10 16:36 + */ + List getStaffingList(@Param("list")List list,@Param("params") EightMembersVacancyVo vo); + + /** + * 角色下拉选 + * @return List> + * @author cwchen + * @date 2025/2/10 17:50 + */ + List> getRoleList(); + +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/entity/EightMembersVacancyVo.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/entity/EightMembersVacancyVo.java new file mode 100644 index 0000000..8b26102 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/entity/EightMembersVacancyVo.java @@ -0,0 +1,64 @@ +package com.bonus.system.dept.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * @className:EightMembersVacancyVo + * @author:cwchen + * @date:2025-02-10-14:03 + * @version:1.0 + * @description:八大员缺员兼职查询-vo + */ +@Data +public class EightMembersVacancyVo { + /**序号*/ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Excel(name = "序号", width = 20,height = 15,orderNum = "0") + private long serialNumber; + /**id*/ + private Long id; + /**角色名称*/ + @Excel(name = "角色名称", width = 30,height = 15,orderNum = "1") + private String roleName; + /**缺员项目部数量*/ + @Excel(name = "缺员项目部数量", width = 30,height = 15,orderNum = "2") + private int vacancyDeptNum; + /**兼职项目部数量*/ + @Excel(name = "兼职项目部数量", width = 30,height = 15,orderNum = "3") + private int partTimeJobNum; + /**1.缺员项目部详情 2.兼职项目部详情*/ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private int type; + + @Data + public static class VacancyDetail{ + /**角色ID*/ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + public String departmentRoleId; + /**姓名*/ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + public String userName; + /**项目部名称*/ + public String orgName; + /**项目经理*/ + public String projectManager; + /**安全员*/ + public String safetyOfficer; + /**质检员*/ + public String qualityInspector; + /**项目总工*/ + public String projectChiefEngineer; + /**机械员*/ + public String machinist; + /**资料员*/ + public String document; + /**施工员*/ + public String constructionWorker; + /**材料员*/ + public String materialMan; + /**其他*/ + public String other; + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyService.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyService.java new file mode 100644 index 0000000..36aca65 --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyService.java @@ -0,0 +1,51 @@ +package com.bonus.system.dept.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.dept.entity.EightMembersVacancyVo; + +import java.util.List; + +/** + * @className:EightMembersVacancyService + * @author:cwchen + * @date:2025-02-10-13:40 + * @version:1.0 + * @description:八大员缺员兼职查询-service + */ +public interface EightMembersVacancyService { + + /** + * 八大员缺员兼职查询-列表查询 + * @param vo + * @return List + * @author cwchen + * @date 2025/2/10 14:13 + */ + List getList(EightMembersVacancyVo vo); + + /** + * 八大员缺员兼职查询-缺员项目部详情 + * @param vo + * @return List + * @author cwchen + * @date 2025/2/10 16:32 + */ + List getUnderStaffingList(EightMembersVacancyVo vo); + + /** + * 八大员缺员兼职查询-兼职项目部详情 + * @param vo + * @return List + * @author cwchen + * @date 2025/2/10 16:32 + */ + List getPartTimeList(EightMembersVacancyVo vo); + + /** + * 角色下拉选 + * @return AjaxResult + * @author cwchen + * @date 2025/2/10 16:40 + */ + AjaxResult getRoleList(); +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyServiceImpl.java new file mode 100644 index 0000000..d43d1af --- /dev/null +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/dept/service/EightMembersVacancyServiceImpl.java @@ -0,0 +1,161 @@ +package com.bonus.system.dept.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.dept.dao.EightMembersVacancyDao; +import com.bonus.system.dept.entity.EightMembersVacancyVo; +import com.github.pagehelper.PageHelper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import static com.bonus.common.core.utils.PageUtils.startPage; + +/** + * @className:EightMembersVacancyServiceImpl + * @author:cwchen + * @date:2025-02-10-13:40 + * @version:1.0 + * @description:八大员缺员兼职-业务层 + */ +@Service(value = "EightMembersVacancyService") +@Slf4j +public class EightMembersVacancyServiceImpl implements EightMembersVacancyService{ + + @Resource(name = "EightMembersVacancyDao") + private EightMembersVacancyDao dao; + + @Resource(name = "testTaskExecutor") + private ThreadPoolTaskExecutor testTaskExecutor; + + @Override + public List getList(EightMembersVacancyVo vo) { + List list = new ArrayList<>(); + try { + list = dao.getList(vo); + for (EightMembersVacancyVo vacancyVo : list) { + testTaskExecutor.execute(() -> { + // 查询缺员项目部数量 + List numList = dao.getNumByType(vacancyVo.getId(),1); + // 查询兼职项目部数量 + List numList2 = dao.getNumByType(vacancyVo.getId(),2); + vacancyVo.setVacancyDeptNum(CollectionUtils.isEmpty(numList) ? 0 : numList.size()); + vacancyVo.setPartTimeJobNum(CollectionUtils.isEmpty(numList2) ? 0 : numList2.size()); + }); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return list; + } + + @Override + public List getUnderStaffingList(EightMembersVacancyVo vo) { + List list = new ArrayList<>(); + try { + // 查询缺员项目部id + List underStaffingIds = dao.getNumByType(vo.getId(),1); + startPage(); + if(CollectionUtils.isNotEmpty(underStaffingIds)){ + list = dao.getStaffingList(underStaffingIds,vo); + handleData(list); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return list; + } + + @Override + public List getPartTimeList(EightMembersVacancyVo vo) { + List list = new ArrayList<>(); + try { + // 查询兼职项目部id + List partTimeIds = dao.getNumByType(vo.getId(),2); + startPage(); + if(CollectionUtils.isNotEmpty(partTimeIds)){ + list = dao.getStaffingList(partTimeIds,vo); + handleData(list); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return list; + } + + @Override + public AjaxResult getRoleList() { + List> list = new ArrayList<>(); + try { + list = dao.getRoleList(); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + /** + * 处理项目经理、安全员、质检员等数据 + * @param list + * @return void + * @author cwchen + * @date 2025/2/11 10:18 + */ + public void handleData(List list){ + if(CollectionUtils.isNotEmpty(list)){ + for (EightMembersVacancyVo.VacancyDetail vacancyDetail : list) { + StringBuilder sb = new StringBuilder(); + StringBuilder sb2 = new StringBuilder(); + StringBuilder sb3 = new StringBuilder(); + StringBuilder sb4 = new StringBuilder(); + StringBuilder sb5 = new StringBuilder(); + StringBuilder sb6 = new StringBuilder(); + StringBuilder sb7 = new StringBuilder(); + StringBuilder sb8 = new StringBuilder(); + StringBuilder sb9 = new StringBuilder(); + if(StringUtils.isNotBlank(vacancyDetail.getDepartmentRoleId())){ + String[] departmentRoleIdArr = vacancyDetail.getDepartmentRoleId().split(","); + String[] userNameArr = vacancyDetail.getUserName().split(","); + for (int i = 0; i < departmentRoleIdArr.length; i++) { + String departmentRoleId = departmentRoleIdArr[i]; + if(Objects.equals(departmentRoleId,"1")){ + sb.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"2")){ + sb2.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"3")){ + sb3.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"4")){ + sb4.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"5")){ + sb5.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"6")){ + sb6.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"7")){ + sb7.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"8")){ + sb8.append(userNameArr[i]).append("、"); + }else if(Objects.equals(departmentRoleId,"9")){ + sb9.append(userNameArr[i]).append("、"); + } + } + } + vacancyDetail.setProjectManager(StringUtils.stripEnd(sb.toString(),"、")); + vacancyDetail.setSafetyOfficer(StringUtils.stripEnd(sb2.toString(),"、")); + vacancyDetail.setQualityInspector(StringUtils.stripEnd(sb3.toString(),"、")); + vacancyDetail.setProjectChiefEngineer(StringUtils.stripEnd(sb4.toString(),"、")); + vacancyDetail.setMachinist(StringUtils.stripEnd(sb5.toString(),"、")); + vacancyDetail.setDocument(StringUtils.stripEnd(sb6.toString(),"、")); + vacancyDetail.setConstructionWorker(StringUtils.stripEnd(sb7.toString(),"、")); + vacancyDetail.setMaterialMan(StringUtils.stripEnd(sb8.toString(),"、")); + vacancyDetail.setOther(StringUtils.stripEnd(sb9.toString(),"、")); + } + } + } +} diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java index 284fd68..4a99f1b 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/download/ExportFileController.java @@ -25,7 +25,9 @@ import com.bonus.system.basic.domain.SysOrg; import com.bonus.system.basic.domain.SysOrgExport; import com.bonus.system.basic.service.SysOrgService; import com.bonus.system.dept.dao.ProDeptRoleDao; +import com.bonus.system.dept.entity.EightMembersVacancyVo; import com.bonus.system.dept.entity.SubOrgBean; +import com.bonus.system.dept.service.EightMembersVacancyService; import com.bonus.system.dept.service.SubOrgService; import com.bonus.system.evection.entity.EvectionBean; import com.bonus.system.evection.service.EvectionService; @@ -140,6 +142,9 @@ public class ExportFileController { @Resource private SysOrgDao sysOrgDao; + @Resource(name = "EightMembersVacancyService") + private EightMembersVacancyService eightMembersVacancyService; + /** * 分公司项目部导出 @@ -1266,5 +1271,26 @@ public class ExportFileController { } } + /** + * 八大员缺员兼职查询-导出 + * @param response + * @param vo + * @return void + * @author cwchen + * @date 2025/2/11 9:16 + */ + @GetMapping("/exportEightMembersVacancy") + public void exportEightMembersVacancy(HttpServletResponse response, EightMembersVacancyVo vo) { + try { + List list = eightMembersVacancyService.getList(vo); + for (int i = 0; i < list.size(); i++) { + list.get(i).setSerialNumber(i + 1); + } + extracted(list, WechatLeaveReportingBean.class, "八大员缺员兼职查询", "八大员缺员兼职查询", "八大员缺员兼职查询", response); + } catch (IOException e) { + log.error(e.toString(),e); + } + } + } diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/dept/EightMembersVacancyMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/dept/EightMembersVacancyMapper.xml new file mode 100644 index 0000000..0d39e7e --- /dev/null +++ b/bonus-modules/bonus-system/src/main/resources/mapper/dept/EightMembersVacancyMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + \ No newline at end of file