Compare commits

...

9 Commits

Author SHA1 Message Date
furongxin
4e22e93913 Merge remote-tracking branch 'znkj/frx' into frx 2024-11-23 10:55:19 +08:00
furongxin
066ccf7021 feat(system): 新增项目管理功能
- 添加项目管理相关的数据对象、控制器、服务接口和实现类
- 实现项目管理的 CRUD 功能,包括创建、更新、删除和查询项目信息
- 添加租赁客户管理功能

- 优化文件更新接口,支持批量更新- 新增用户信息查询接口- 添加系统错误码常量
2024-11-23 10:54:31 +08:00
furongxin
f5ff97b375 feat(bpm): 分离备用金金额与剩余金额字段
- 在 BpmOACashRespVO 和 BpmOAReimbursementRespVO 中添加 remainingAmount 字段
- 修改 BpmProcessInstanceServiceImpl 中的逻辑,分别设置 amount 和 remainingAmount
- 此修改提高了数据的准确性和可靠性,避免了之前金额混淆的问题
2024-11-23 10:54:31 +08:00
furongxin
b224956b67 refactor(bpm): 优化流程实例服务和流程抄送 mapper- 将 BpmProcessCcMapper 中的 eqIfPresent 改为 likeIfPresent,提高查询灵活性- 优化 BpmProcessInstanceServiceImpl 中的用户组和抄送逻辑
- 添加空集合判断,避免不必要的操作
- 调整代码格式,提高可读性
2024-11-23 10:54:31 +08:00
aikai
90fd403d9a 关闭用户后将当前用户移出当前用户所在的考勤组 2024-11-23 10:30:01 +08:00
aikai
169c30f395 处理周末打卡打卡状态计算bug 2024-11-23 10:04:05 +08:00
aikai
ada0c8d0ba Merge branch 'dev' of http://git.znkjfw.com/ak/zn-cloud into dev 2024-11-20 12:07:14 +08:00
aikai
31a2b4acd1 feat(system): 增加资产类型名称和类型字段
- 在 AssetsRespVO 和 AssetsDO 中添加 typeName 和 type 字段
- 在 AssetsServiceImpl 中实现资产类型名称和类型的查询
- 在 FactoryForkliftRespVO 和 FactoryForkliftSaveReqVO 中添加设备代码和出厂编号字段
- 在 FactoryForkliftDO 中添加设备代码和出厂编号字段
2024-11-20 12:07:09 +08:00
2ec266aaa5 流程实例过滤配置功能 2024-11-15 18:08:40 +08:00
16 changed files with 375 additions and 9 deletions

View File

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstallFilterRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO;
import cn.iocoder.yudao.module.bpm.convert.definition.BpmInstallFilterConvert;
import cn.iocoder.yudao.module.bpm.convert.definition.BpmUserGroupConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import cn.iocoder.yudao.module.bpm.service.definition.BpmInstanceFilterService;
import cn.iocoder.yudao.module.bpm.service.definition.BpmUserGroupService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 流程实例过滤")
@RestController
@RequestMapping("/bpm/instance-filter")
@Validated
public class BpmInstanceFilterController {
@Resource
private BpmInstanceFilterService instanceFilterService;
@PostMapping("/create")
@Operation(summary = "添加需要过滤的流程实例")
public CommonResult<Long> createInstanceFilter(@RequestParam("processInstanceId")String processInstanceId) {
return success(instanceFilterService.createInstanceFilter(processInstanceId));
}
@PutMapping("/update")
@Operation(summary = "更新流程实例是否需要过滤")
public CommonResult<Boolean> updateInstanceFilterStatus(@RequestParam("id")Long id, @RequestParam("status") Integer status) {
instanceFilterService.updateInstanceFilterStatus(id, status);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除过滤")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> deleteUserGroup(@RequestParam("id") Long id) {
instanceFilterService.deleteInstanceFilter(id);
return success(true);
}
@GetMapping("/page")
@Operation(summary = "获得流程实例过滤分页")
public CommonResult<PageResult<BpmInstanceFilterDO>> getInstanceFilterPage(@Valid @ModelAttribute BpmInstanceFilterPageReqVO pageVO) {
PageResult<BpmInstanceFilterDO> pageResult = instanceFilterService.getInstanceFilterPage(pageVO);
return success(pageResult);
}
}

View File

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupBaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 流程实例过滤 Response VO")
@Data
@ToString(callSuper = true)
public class BpmInstallFilterRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 流程实例过滤分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BpmInstanceFilterPageReqVO extends PageParam {
@Schema(description = "流程实例ID", example = "xxxxxxx")
private String processInstanceId;
@Schema(description = "状态", example = "1")
private Integer status;
@DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@Schema(description = "创建时间")
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.bpm.convert.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstallFilterRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupUpdateReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import org.mapstruct.Mapper;
import org.mapstruct.Named;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 用户组 Convert
*
*/
@Mapper
public interface BpmInstallFilterConvert {
BpmInstallFilterConvert INSTANCE = Mappers.getMapper(BpmInstallFilterConvert.class);
PageResult<BpmInstallFilterRespVO> convertPage(PageResult<BpmInstanceFilterDO> page);
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.bpm.dal.dataobject.definition;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Set;
/**
* Bpm 流程实例过滤
*
*/
@TableName(value = "bpm_instance_filter", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BpmInstanceFilterDO extends BaseDO {
/**
* 编号自增
*/
@TableId
private Long id;
/**
* 流程实例ID
*/
private String processInstanceId;
/**
* 状态
*
* 枚举 {@link CommonStatusEnum}
*/
private Integer status;
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.bpm.dal.mysql.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group.BpmUserGroupPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 流程实例过滤 Mapper
*
*/
@Mapper
public interface BpmInstanceFilterMapper extends BaseMapperX<BpmInstanceFilterDO> {
default PageResult<BpmInstanceFilterDO> selectPage(BpmInstanceFilterPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BpmInstanceFilterDO>()
.eqIfPresent(BpmInstanceFilterDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.eqIfPresent(BpmInstanceFilterDO::getStatus, reqVO.getStatus())
.betweenIfPresent(BpmInstanceFilterDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(BpmInstanceFilterDO::getId));
}
}

View File

@ -0,0 +1,46 @@
package cn.iocoder.yudao.module.bpm.service.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
/**
* 流程实例过滤 Service 接口
*
*/
public interface BpmInstanceFilterService {
/**
* 新增需要过滤的流程实例ID
*
* @param processInstanceId 流程实例ID
* @return 编号
*/
Long createInstanceFilter(String processInstanceId);
/**
* 流程实例显示开关
*
* @param id 主键ID
* @param status 开关状态
*/
void updateInstanceFilterStatus(Long id, Integer status);
/**
* 删除用户组
*
* @param id 编号
*/
void deleteInstanceFilter(Long id);
/**
* 获得用户组分页
*
* @param pageReqVO 分页查询
* @return 用户组分页
*/
PageResult<BpmInstanceFilterDO> getInstanceFilterPage(BpmInstanceFilterPageReqVO pageReqVO);
}

View File

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.bpm.service.definition;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.filter.BpmInstanceFilterPageReqVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmInstanceFilterDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmInstanceFilterMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
/**
* 流程实例过滤 Service 接口
*
*/
@Service
@Validated
@Slf4j
public class BpmInstanceFilterServiceImpl implements BpmInstanceFilterService{
@Resource
private BpmInstanceFilterMapper instanceFilterMapper;
@Override
public Long createInstanceFilter(String processInstanceId) {
// 插入
BpmInstanceFilterDO instanceFilter = new BpmInstanceFilterDO() ;
instanceFilter.setProcessInstanceId(processInstanceId) ;
instanceFilter.setStatus(1) ;
instanceFilterMapper.insert(instanceFilter);
// 返回
return instanceFilter.getId();
}
@Override
public void updateInstanceFilterStatus(Long id, Integer status) {
BpmInstanceFilterDO result = instanceFilterMapper.selectById(id);
result.setStatus(status) ;
instanceFilterMapper.updateById(result) ;
}
@Override
public void deleteInstanceFilter(Long id) {
instanceFilterMapper.deleteById(id) ;
}
@Override
public PageResult<BpmInstanceFilterDO> getInstanceFilterPage(BpmInstanceFilterPageReqVO pageReqVO) {
return instanceFilterMapper.selectPage(pageReqVO);
}
}

View File

@ -46,6 +46,10 @@ public class AssetsRespVO {
@ExcelProperty("资产类型id")
private Long typeId;
@Schema(description = "资产类型名称", example = "5169")
@ExcelProperty("资产类型名称")
private String typeName;
@Schema(description = "其余信息(json)")
@ExcelProperty("其余信息(json)")
private String itemJson;

View File

@ -77,13 +77,14 @@ public class AttendancePunchPageVO {
/**
* 处理加班打卡 不计算是否迟到早退
*
* @param punchType
*/
public void setPunchType(Integer punchType) {
if (this.getFieldworkFlag() == 0) {
if (this.getWorkOvertimeFlag() == 0) {
this.punchType = punchType;
} else {
this.punchType = Arrays.asList(0, 2).contains(punchType) ? 0 : 1;
this.punchType = Arrays.asList(0, 2).contains(punchType) ? 0 : (Arrays.asList(1, 3).contains(punchType) ? 1 : 4);
}
}
}

View File

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.system.dal.dataobject.assets;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
@ -66,4 +68,9 @@ public class AssetsDO extends BaseDO {
*/
@TableField(exist = false)
private Integer type;
/**
* 资产类型名称
*/
@TableField(exist = false)
private String typeName;
}

View File

@ -19,7 +19,6 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@ -70,7 +69,11 @@ public class AssetsServiceImpl implements AssetsService {
@Override
public AssetsDO getAssets(Long id) {
return assetsMapper.selectById(id);
AssetsDO assetsDO = assetsMapper.selectById(id);
AssetsTypeDO assetsTypeDO = assetsTypeMapper.selectById(assetsDO.getTypeId());
assetsDO.setTypeName(assetsTypeDO.getName());
assetsDO.setType(assetsTypeDO.getType());
return assetsDO;
}
@Override

View File

@ -26,9 +26,11 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.factoryUser.Facto
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupuser.AttendanceGroupUserMapper;
import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
@ -88,6 +90,8 @@ public class AdminUserServiceImpl implements AdminUserService {
@Resource
private UserPostMapper userPostMapper;
@Resource
private AttendanceGroupUserMapper attendanceGroupUserMapper;
@Resource
private FileApi fileApi;
@ -264,6 +268,9 @@ public class AdminUserServiceImpl implements AdminUserService {
case 1:
// 关闭状态 设置用户编制为离职
updateObj.setUserStaffing(8);
// -- 将当前用户移除所在考情组
attendanceGroupUserMapper.delete(new LambdaQueryWrapper<AttendanceGroupUserDO>()
.eq(AttendanceGroupUserDO::getUserId, id));
break;
}
userMapper.updateById(updateObj);
@ -745,7 +752,7 @@ public class AdminUserServiceImpl implements AdminUserService {
@Override
public List<AdminUserDO> getAllList(Integer status, Integer type, List<Long> userIds) {
if (CollUtil.isEmpty(userIds)){
if (CollUtil.isEmpty(userIds)) {
return Collections.emptyList();
}
return userMapper.selectList(new LambdaQueryWrapper<AdminUserDO>()

View File

@ -50,6 +50,12 @@ public class FactoryForkliftRespVO {
@ExcelProperty("厂商")
private String manufacturer;
@Schema(description = "设备代码")
private String equipmentCode;
@Schema(description = "出厂编号")
private String serialNo;
@Schema(description = "型号")
@ExcelProperty("型号")
private String modelNo;

View File

@ -30,6 +30,12 @@ public class FactoryForkliftSaveReqVO {
@Schema(description = "厂商")
private String manufacturer;
@Schema(description = "设备代码")
private String equipmentCode;
@Schema(description = "出厂编号")
private String serialNo;
@Schema(description = "型号")
private String modelNo;

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryforklift;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
@ -47,6 +48,14 @@ public class FactoryForkliftDO extends BaseDO {
* 厂商
*/
private String manufacturer;
/**
* 设备代码
*/
private String equipmentCode;
/**
* 出厂编号
*/
private String serialNo;
/**
* 型号
*/