Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud into dev

This commit is contained in:
aikai 2024-09-25 14:44:25 +08:00
commit b68eba4949
23 changed files with 169 additions and 47 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.controller.admin.oa; package cn.iocoder.yudao.module.bpm.controller.admin.oa;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.evection.BpmOAEvectionRespVO;
@ -16,8 +17,10 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
/** /**
@ -54,9 +57,9 @@ public class BpmOAEvectionController {
BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection); BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection);
if (evection.getTogetherUserId() != null) { if (CollectionUtil.isNotEmpty(evection.getTogetherUserIds())) {
AdminUserRespDTO userRespDTO = userApi.getUser(evection.getTogetherUserId()).getCheckedData(); List<AdminUserRespDTO> userRespDTOs = userApi.getUserList(respVO.getTogetherUserIds()).getCheckedData();
respVO.setTogetherUserName(userRespDTO.getNickname()); respVO.setTogetherUserName(String.join("", convertList(userRespDTOs, AdminUserRespDTO::getNickname)));
} }
return success(respVO); return success(respVO);
@ -71,9 +74,9 @@ public class BpmOAEvectionController {
BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection); BpmOAEvectionRespVO respVO = BpmOAEvectionConvert.INSTANCE.convert(evection);
if (evection.getTogetherUserId() != null) { if (CollectionUtil.isNotEmpty(evection.getTogetherUserIds())) {
AdminUserRespDTO userRespDTO = userApi.getUser(evection.getTogetherUserId()).getCheckedData(); List<AdminUserRespDTO> userRespDTOs = userApi.getUserList(evection.getTogetherUserIds()).getCheckedData();
respVO.setTogetherUserName(userRespDTO.getNickname()); respVO.setTogetherUserName(String.join("", convertList(userRespDTOs, AdminUserRespDTO::getNickname)));
} }
return success(respVO); return success(respVO);

View File

@ -42,6 +42,10 @@ public class BpmOASalaryController {
@Operation(summary = "创建请求申请") @Operation(summary = "创建请求申请")
public CommonResult<Long> createSalary(@Valid @RequestBody BpmOASalaryCreateReqVO createReqVO) { public CommonResult<Long> createSalary(@Valid @RequestBody BpmOASalaryCreateReqVO createReqVO) {
if (createReqVO.getFactoryId() != null) {
DeptRespDTO dto = deptApi.getDeptByFactoryId(createReqVO.getFactoryId()).getCheckedData();
createReqVO.setCompanyDeptId(dto.getId());
}
return success(salaryService.createSalary(getLoginUserId(), createReqVO)); return success(salaryService.createSalary(getLoginUserId(), createReqVO));
} }
@ -51,9 +55,18 @@ public class BpmOASalaryController {
public CommonResult<BpmOASalaryRespVO> getSalary(@RequestParam("id") Long id) { public CommonResult<BpmOASalaryRespVO> getSalary(@RequestParam("id") Long id) {
BpmOASalaryDO salary = salaryService.getSalary(id); BpmOASalaryDO salary = salaryService.getSalary(id);
if (salary == null) {
return success(new BpmOASalaryRespVO());
}
return success(BpmOASalaryConvert.INSTANCE.convert(salary) // 获取部门详情
.setCompanyName(getDept(salary.getCompanyDeptId()).getName())); DeptRespDTO dto = getDept(salary.getCompanyDeptId());
BpmOASalaryRespVO respVO = BpmOASalaryConvert.INSTANCE.convert(salary)
.setCompanyName(dto.getName())
.setFactoryId(dto.getFactoryId());
return success(respVO);
} }
@GetMapping("/getByProcessInstanceId") @GetMapping("/getByProcessInstanceId")
@ -63,8 +76,14 @@ public class BpmOASalaryController {
BpmOASalaryDO salary = salaryService.getByProcessInstanceId(processInstanceId); BpmOASalaryDO salary = salaryService.getByProcessInstanceId(processInstanceId);
return success(BpmOASalaryConvert.INSTANCE.convert(salary) // 获取部门详情
.setCompanyName(getDept(salary.getCompanyDeptId()).getName())); DeptRespDTO dto = getDept(salary.getCompanyDeptId());
BpmOASalaryRespVO respVO = BpmOASalaryConvert.INSTANCE.convert(salary)
.setCompanyName(dto.getName())
.setFactoryId(dto.getFactoryId());
return success(respVO);
} }
/** /**

View File

@ -11,6 +11,7 @@ import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -30,7 +31,7 @@ public class BpmOAEvectionCreateReqVO {
private String reason; private String reason;
@Schema(description = "随行人用户编号") @Schema(description = "随行人用户编号")
private Long togetherUserId; private Set<Long> togetherUserIds;
@Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "出差起点", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "出差起点不能为空") @NotNull(message = "出差起点不能为空")

View File

@ -12,6 +12,7 @@ import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -29,7 +30,7 @@ public class BpmOAEvectionRespVO extends BpmOABaseRespVO {
private String reason; private String reason;
@Schema(description = "随行人用户编号") @Schema(description = "随行人用户编号")
private Long togetherUserId; private Set<Long> togetherUserIds;
@Schema(description = "随行人用户名称") @Schema(description = "随行人用户名称")
private String togetherUserName; private String togetherUserName;

View File

@ -37,6 +37,10 @@ public class BpmOARegularCreateReqVO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate confirmationDate; private LocalDate confirmationDate;
@Schema(description = "期望转正时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate desireDate;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private String notes; private String notes;

View File

@ -36,6 +36,10 @@ public class BpmOARegularRespVO extends BpmOABaseRespVO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate confirmationDate; private LocalDate confirmationDate;
@Schema(description = "期望转正时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDate desireDate;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Schema(description = "备注", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private String notes; private String notes;

View File

@ -5,15 +5,11 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
/** /**
* 薪资付款申请 创建 Request VO * 薪资付款申请 创建 Request VO
* *
@ -29,10 +25,12 @@ public class BpmOASalaryCreateReqVO {
@NotNull(message = "申请原因不能为空") @NotNull(message = "申请原因不能为空")
private String reason; private String reason;
@Schema(description = "付款公司", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "付款公司")
@NotNull(message = "付款公司不能为空")
private Long companyDeptId; private Long companyDeptId;
@Schema(description = "付款工厂编号")
private Long factoryId;
@Schema(description = "付款总额", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "付款总额", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "付款总额不能为空") @NotNull(message = "付款总额不能为空")
private BigDecimal paymentTotal; private BigDecimal paymentTotal;

View File

@ -6,15 +6,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
/** /**
* @author 符溶馨 * @author 符溶馨
*/ */
@ -33,6 +28,9 @@ public class BpmOASalaryRespVO extends BpmOABaseRespVO {
@Schema(description = "付款公司名称") @Schema(description = "付款公司名称")
private String companyName; private String companyName;
@Schema(description = "付款工厂")
private Long FactoryId;
@Schema(description = "付款总额") @Schema(description = "付款总额")
private BigDecimal paymentTotal; private BigDecimal paymentTotal;

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -12,6 +13,7 @@ import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* OA 出差申请 DO * OA 出差申请 DO
@ -48,9 +50,10 @@ public class BpmOAEvectionDO extends BaseDO {
private String reason; private String reason;
/** /**
* 随行人用户编号 * 随行人用户编号
*/ */
private Long togetherUserId; @TableField(typeHandler = JsonLongSetTypeHandler.class)
private Set<Long> togetherUserIds;
/** /**
* 出差地点 起点 * 出差地点 起点

View File

@ -36,7 +36,6 @@ public class BpmOARegularDO extends BaseDO {
/** /**
* 申请人的用户编号 * 申请人的用户编号
*
* 关联 AdminUserDO id 属性 * 关联 AdminUserDO id 属性
*/ */
private Long userId; private Long userId;
@ -56,13 +55,18 @@ public class BpmOARegularDO extends BaseDO {
*/ */
private LocalDate confirmationDate; private LocalDate confirmationDate;
/**
* 期望转正时间
*/
private LocalDate desireDate;
/** /**
* 备注 * 备注
*/ */
private String notes; private String notes;
/** /**
* 出差的结果 * 结果
* *
* 枚举 {@link BpmProcessInstanceResultEnum} * 枚举 {@link BpmProcessInstanceResultEnum}
* 考虑到简单所以直接复用了 BpmProcessInstanceResultEnum 枚举也可以自己定义一个枚举哈 * 考虑到简单所以直接复用了 BpmProcessInstanceResultEnum 枚举也可以自己定义一个枚举哈

View File

@ -53,8 +53,8 @@ public interface DeptApi {
CommonResult<Long> createDept(@RequestBody DeptRespDTO deptRespDTO); CommonResult<Long> createDept(@RequestBody DeptRespDTO deptRespDTO);
@PostMapping(PREFIX + "/update") @PostMapping(PREFIX + "/update")
@Operation(summary = "修改部门信息") @Operation(summary = "修改工厂部门信息")
void updateDept(@RequestBody DeptRespDTO deptRespDTO); void updateFactoryDept(@RequestBody DeptRespDTO deptRespDTO);
@PostMapping(PREFIX + "/delete") @PostMapping(PREFIX + "/delete")
@Operation(summary = "删除部门信息") @Operation(summary = "删除部门信息")

View File

@ -53,6 +53,7 @@ public interface ErrorCodeConstants {
ErrorCode DEPT_EXISTS_USER = new ErrorCode(1_002_004_005, "部门中存在员工,无法删除"); ErrorCode DEPT_EXISTS_USER = new ErrorCode(1_002_004_005, "部门中存在员工,无法删除");
ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1_002_004_006, "部门({})不处于开启状态,不允许选择"); ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1_002_004_006, "部门({})不处于开启状态,不允许选择");
ErrorCode DEPT_PARENT_IS_CHILD = new ErrorCode(1_002_004_007, "不能设置自己的子部门为父部门"); ErrorCode DEPT_PARENT_IS_CHILD = new ErrorCode(1_002_004_007, "不能设置自己的子部门为父部门");
ErrorCode FACTORY_DEPT_NOT_FOUND = new ErrorCode(1_002_004_008, "当前工厂没有对应部门");
// ========== 职称模块 1-002-005-000 ========== // ========== 职称模块 1-002-005-000 ==========
ErrorCode POST_NOT_FOUND = new ErrorCode(1_002_005_000, "当前职称不存在"); ErrorCode POST_NOT_FOUND = new ErrorCode(1_002_005_000, "当前职称不存在");

View File

@ -75,18 +75,10 @@ public class DeptApiImpl implements DeptApi {
} }
@Override @Override
public void updateDept(DeptRespDTO deptRespDTO) { public void updateFactoryDept(DeptRespDTO deptRespDTO) {
DeptDO deptDO = deptService.getDeptByFactoryId(deptRespDTO.getFactoryId()); DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptRespDTO, DeptSaveReqVO.class);
deptService.updateFactoryDept(deptSaveReqVO);
if (deptDO != null) {
DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptDO, DeptSaveReqVO.class);
deptSaveReqVO.setLeaderUserId(deptRespDTO.getLeaderUserId());
deptSaveReqVO.setName(deptRespDTO.getName());
deptService.updateDept(deptSaveReqVO);
}
} }
@Override @Override

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO; import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractRespVO;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.LaborContractSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo.SigningDateRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO; import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@ -21,9 +22,12 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "管理后台 - 劳动合同管理") @Tag(name = "管理后台 - 劳动合同管理")
@RestController @RestController
@ -101,4 +105,21 @@ public class LaborContractController {
return success(laborContractService.getLaborContractPage(pageReqVO)); return success(laborContractService.getLaborContractPage(pageReqVO));
} }
@GetMapping("/getSigningDate")
@Operation(summary = "获得当前登录用户的入职时间和转正时间")
@PreAuthorize("@ss.hasPermission('system:labor-contract:query')")
public CommonResult<SigningDateRespVO> getSigningDate() {
LaborContractDO contractDO = laborContractService.getSigningDate(getLoginUserId());
if (contractDO == null) {
return success(new SigningDateRespVO());
}
SigningDateRespVO respVO = BeanUtils.toBean(contractDO, SigningDateRespVO.class);
// 设置转正日期
LocalDate regularDate = contractDO.getSigningDate().plusMonths(contractDO.getProbationPeriodTime());
respVO.setRegularDate(regularDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
return success(respVO);
}
} }

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.system.controller.admin.laborcontract.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 劳动合同管理 Response VO")
@Data
public class SigningDateRespVO {
@Schema(description = "签约日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private String signingDate;
@Schema(description = "转正日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private String regularDate;
}

View File

@ -9,9 +9,12 @@ import lombok.Data;
@Data @Data
public class UploadFile { public class UploadFile {
@Schema(description = "文件管理 fileId", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.jpg") @Schema(description = "文件管理 fileId", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private String fileId; private String fileId;
@Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.jpg")
private String fileName;
@Schema(description = "文件URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxx.xxx/xx/xx/123.jpgss") @Schema(description = "文件URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxx.xxx/xx/xx/123.jpgss")
private String url; private String url;

View File

@ -136,7 +136,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
" contract_duration AS contractDuration,\n" + " contract_duration AS contractDuration,\n" +
" probation_period_time AS probationPeriodTime,\n" + " probation_period_time AS probationPeriodTime,\n" +
" status,\n" + " status,\n" +
" create_time AS createTime,\n" + " create_time AS createTime\n" +
" FROM\n" + " FROM\n" +
" system_labor_contract lc\n" + " system_labor_contract lc\n" +
" INNER JOIN (SELECT\n" + " INNER JOIN (SELECT\n" +

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.worklog;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
@ -65,8 +64,8 @@ public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
.eq(LogReadDo::getLogInstanceId, LogInstanceDO::getId) .eq(LogReadDo::getLogInstanceId, LogInstanceDO::getId)
.eq(LogReadDo::getReadUserId, userId) .eq(LogReadDo::getReadUserId, userId)
.eq(LogReadDo::getDeleted, 0)); .eq(LogReadDo::getDeleted, 0));
queryWrapper.leftJoin("(SELECT log_instance_id, COUNT(log_instance_id) AS readCount FROM work_log_read where read_status = 1 GROUP BY log_instance_id) c on t.id = c.log_instance_id"); queryWrapper.leftJoin("(SELECT log_instance_id, COUNT(log_instance_id) AS readCount FROM work_log_read where read_status = 1 and deleted = 0 GROUP BY log_instance_id) c on t.id = c.log_instance_id");
queryWrapper.leftJoin("(SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 GROUP BY log_instance_id) AS d ON t.id = d.log_instance_id"); queryWrapper.leftJoin("(SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 and deleted = 0 GROUP BY log_instance_id) AS d ON t.id = d.log_instance_id");
queryWrapper.leftJoin("(SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON t.id = b.work_log_id"); queryWrapper.leftJoin("(SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON t.id = b.work_log_id");
queryWrapper.eqIfPresent(LogInstanceDO::getDeptId, reqVO.getDeptId()); queryWrapper.eqIfPresent(LogInstanceDO::getDeptId, reqVO.getDeptId());
queryWrapper.eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId()); queryWrapper.eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId());

View File

@ -30,6 +30,12 @@ public interface DeptService {
*/ */
void updateDept(DeptSaveReqVO updateReqVO); void updateDept(DeptSaveReqVO updateReqVO);
/**
* 更新工厂部门
* @param updateReqVO 更新信息
*/
void updateFactoryDept(DeptSaveReqVO updateReqVO);
/** /**
* 删除部门 * 删除部门
* *

View File

@ -128,6 +128,17 @@ public class DeptServiceImpl implements DeptService {
deptMapper.updateById(updateObj); deptMapper.updateById(updateObj);
} }
@Override
public void updateFactoryDept(DeptSaveReqVO updateReqVO) {
// 校验自己存在
validateFactoryDeptExists(updateReqVO.getFactoryId());
DeptDO update = BeanUtils.toBean(updateReqVO, DeptDO.class);
deptMapper.update(update, new LambdaQueryWrapperX<DeptDO>()
.eq(DeptDO::getFactoryId, updateReqVO.getFactoryId()));
}
@Override @Override
@CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST, @CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST,
allEntries = true) // allEntries 清空所有缓存因为操作一个部门涉及到多个缓存 allEntries = true) // allEntries 清空所有缓存因为操作一个部门涉及到多个缓存
@ -153,6 +164,17 @@ public class DeptServiceImpl implements DeptService {
} }
} }
@VisibleForTesting
void validateFactoryDeptExists(Long factoryId) {
if (factoryId == null) {
return;
}
DeptDO dept = deptMapper.selectOne(DeptDO::getFactoryId, factoryId);
if (dept == null) {
throw exception(FACTORY_DEPT_NOT_FOUND);
}
}
@VisibleForTesting @VisibleForTesting
void validateParentDept(Long id, Long parentId) { void validateParentDept(Long id, Long parentId) {
if (parentId == null || DeptDO.PARENT_ID_ROOT.equals(parentId)) { if (parentId == null || DeptDO.PARENT_ID_ROOT.equals(parentId)) {

View File

@ -83,5 +83,10 @@ public interface LaborContractService {
*/ */
List<LaborContractDO> getListByEndTime(LocalDate now); List<LaborContractDO> getListByEndTime(LocalDate now);
/**
* 获得当前登录用户的入职时间和转正时间
* @param userId 用户编号
* @return 日期
*/
LaborContractDO getSigningDate(Long userId);
} }

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.service.laborcontract; package cn.iocoder.yudao.module.system.service.laborcontract;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@ -118,4 +119,15 @@ public class LaborContractServiceImpl implements LaborContractService {
.lt(LaborContractDO::getExpirationDate, now) .lt(LaborContractDO::getExpirationDate, now)
.eq(LaborContractDO::getStatus, 3)); .eq(LaborContractDO::getStatus, 3));
} }
@Override
public LaborContractDO getSigningDate(Long userId) {
List<LaborContractDO> list = laborContractMapper.selectList(new LambdaQueryWrapperX<LaborContractDO>()
.eq(LaborContractDO::getUserId, userId)
.isNotNull(LaborContractDO::getProbationPeriodTime)
.orderByDesc(LaborContractDO::getCreateTime));
return CollectionUtil.isEmpty(list) ? null : list.get(0);
}
} }

View File

@ -91,7 +91,7 @@ public class FactoryInfoServiceImpl implements FactoryInfoService {
deptRespDTO.setName(updateReqVO.getShortName()); deptRespDTO.setName(updateReqVO.getShortName());
deptRespDTO.setLeaderUserId(updateReqVO.getLeaderUserId()); deptRespDTO.setLeaderUserId(updateReqVO.getLeaderUserId());
deptRespDTO.setFactoryId(updateReqVO.getId()); deptRespDTO.setFactoryId(updateReqVO.getId());
deptApi.updateDept(deptRespDTO); deptApi.updateFactoryDept(deptRespDTO);
} }
@Override @Override
@ -259,5 +259,11 @@ public class FactoryInfoServiceImpl implements FactoryInfoService {
// 更新 // 更新
FactoryInfoDO updateObj = BeanUtils.toBean(updateReqVO, FactoryInfoDO.class); FactoryInfoDO updateObj = BeanUtils.toBean(updateReqVO, FactoryInfoDO.class);
factoryInfoMapper.updateById(updateObj); factoryInfoMapper.updateById(updateObj);
//同步更新 工厂部门状态
DeptRespDTO deptRespDTO = new DeptRespDTO();
deptRespDTO.setFactoryId(updateReqVO.getId());
deptRespDTO.setStatus(updateReqVO.getStatus());
deptApi.updateFactoryDept(deptRespDTO);
} }
} }