打卡范围
This commit is contained in:
		@ -0,0 +1,41 @@
 | 
			
		||||
package org.dromara.cory.controller;
 | 
			
		||||
 | 
			
		||||
import cn.dev33.satoken.annotation.SaCheckPermission;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.dromara.common.core.domain.R;
 | 
			
		||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
 | 
			
		||||
import org.dromara.common.log.annotation.Log;
 | 
			
		||||
import org.dromara.common.log.enums.BusinessType;
 | 
			
		||||
import org.dromara.cory.domain.bo.BusContactformtemplateBo;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.PostMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.RequestPart;
 | 
			
		||||
import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Author 重构APP相关接口
 | 
			
		||||
 * @Date 2025/7/28 17:07
 | 
			
		||||
 * @Version 1.0
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Validated
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/cory/lhygOrXny")
 | 
			
		||||
public class LhygOrXnyApp {
 | 
			
		||||
 | 
			
		||||
//    /**
 | 
			
		||||
//     * app登录
 | 
			
		||||
//     */
 | 
			
		||||
//    @RepeatSubmit()
 | 
			
		||||
//    @PostMapping()
 | 
			
		||||
//    public R<Void> Login(
 | 
			
		||||
//        BusContactformtemplateBo bo,
 | 
			
		||||
//        @RequestPart("file") MultipartFile file) {
 | 
			
		||||
//        return toAjax(busContactformtemplateService.insertByBo(bo, file));
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,105 @@
 | 
			
		||||
package org.dromara.project.controller;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import jakarta.validation.constraints.*;
 | 
			
		||||
import cn.dev33.satoken.annotation.SaCheckPermission;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
 | 
			
		||||
import org.dromara.common.log.annotation.Log;
 | 
			
		||||
import org.dromara.common.web.core.BaseController;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import org.dromara.common.core.domain.R;
 | 
			
		||||
import org.dromara.common.core.validate.AddGroup;
 | 
			
		||||
import org.dromara.common.core.validate.EditGroup;
 | 
			
		||||
import org.dromara.common.log.enums.BusinessType;
 | 
			
		||||
import org.dromara.common.excel.utils.ExcelUtil;
 | 
			
		||||
import org.dromara.project.domain.vo.BusProjectPunchrangeVo;
 | 
			
		||||
import org.dromara.project.domain.bo.BusProjectPunchrangeBo;
 | 
			
		||||
import org.dromara.project.service.IBusProjectPunchrangeService;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
@Validated
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/project/projectPunchrange")
 | 
			
		||||
public class BusProjectPunchrangeController extends BaseController {
 | 
			
		||||
 | 
			
		||||
    private final IBusProjectPunchrangeService busProjectPunchrangeService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询项目打卡范围列表
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:list")
 | 
			
		||||
    @GetMapping("/list")
 | 
			
		||||
    public TableDataInfo<BusProjectPunchrangeVo> list(BusProjectPunchrangeBo bo, PageQuery pageQuery) {
 | 
			
		||||
        return busProjectPunchrangeService.queryPageList(bo, pageQuery);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导出项目打卡范围列表
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:export")
 | 
			
		||||
    @Log(title = "项目打卡范围", businessType = BusinessType.EXPORT)
 | 
			
		||||
    @PostMapping("/export")
 | 
			
		||||
    public void export(BusProjectPunchrangeBo bo, HttpServletResponse response) {
 | 
			
		||||
        List<BusProjectPunchrangeVo> list = busProjectPunchrangeService.queryList(bo);
 | 
			
		||||
        ExcelUtil.exportExcel(list, "项目打卡范围", BusProjectPunchrangeVo.class, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取项目打卡范围详细信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 主键
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:query")
 | 
			
		||||
    @GetMapping("/{id}")
 | 
			
		||||
    public R<BusProjectPunchrangeVo> getInfo(@NotNull(message = "主键不能为空")
 | 
			
		||||
                                     @PathVariable Long id) {
 | 
			
		||||
        return R.ok(busProjectPunchrangeService.queryById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增项目打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:add")
 | 
			
		||||
    @Log(title = "项目打卡范围", businessType = BusinessType.INSERT)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PostMapping()
 | 
			
		||||
    public R<Void> add(@Validated(AddGroup.class) @RequestBody BusProjectPunchrangeBo bo) {
 | 
			
		||||
        return toAjax(busProjectPunchrangeService.insertByBo(bo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改项目打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:edit")
 | 
			
		||||
    @Log(title = "项目打卡范围", businessType = BusinessType.UPDATE)
 | 
			
		||||
    @RepeatSubmit()
 | 
			
		||||
    @PutMapping()
 | 
			
		||||
    public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusProjectPunchrangeBo bo) {
 | 
			
		||||
        return toAjax(busProjectPunchrangeService.updateByBo(bo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids 主键串
 | 
			
		||||
     */
 | 
			
		||||
    @SaCheckPermission("project:projectPunchrange:remove")
 | 
			
		||||
    @Log(title = "项目打卡范围", businessType = BusinessType.DELETE)
 | 
			
		||||
    @DeleteMapping("/{ids}")
 | 
			
		||||
    public R<Void> remove(@NotEmpty(message = "主键不能为空")
 | 
			
		||||
                          @PathVariable Long[] ids) {
 | 
			
		||||
        return toAjax(busProjectPunchrangeService.deleteWithValidByIds(List.of(ids), true));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,51 @@
 | 
			
		||||
package org.dromara.project.domain;
 | 
			
		||||
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.*;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围对象 bus_project_punchrange
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@TableName("bus_project_punchrange")
 | 
			
		||||
public class BusProjectPunchrange extends BaseEntity {
 | 
			
		||||
 | 
			
		||||
    @Serial
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     */
 | 
			
		||||
    @TableId(value = "id")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目ID
 | 
			
		||||
     */
 | 
			
		||||
    private Long projectId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 范围名称
 | 
			
		||||
     */
 | 
			
		||||
    private String punchName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    private String punchRange;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 颜色
 | 
			
		||||
     */
 | 
			
		||||
    private String punchColor;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,51 @@
 | 
			
		||||
package org.dromara.project.domain.bo;
 | 
			
		||||
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
 | 
			
		||||
import org.dromara.common.core.validate.AddGroup;
 | 
			
		||||
import org.dromara.common.core.validate.EditGroup;
 | 
			
		||||
import io.github.linpeilie.annotations.AutoMapper;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import jakarta.validation.constraints.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围业务对象 bus_project_punchrange
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@AutoMapper(target = BusProjectPunchrange.class, reverseConvertGenerate = false)
 | 
			
		||||
public class BusProjectPunchrangeBo extends BaseEntity {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "不能为空", groups = { EditGroup.class })
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目ID
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
 | 
			
		||||
    private Long projectId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 范围名称
 | 
			
		||||
     */
 | 
			
		||||
    private String punchName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    private String punchRange;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 颜色
 | 
			
		||||
     */
 | 
			
		||||
    private String punchColor;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,33 @@
 | 
			
		||||
package org.dromara.project.domain.bo;
 | 
			
		||||
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Author 铁憨憨
 | 
			
		||||
 * @Date 2025/7/28 19:15
 | 
			
		||||
 * @Version 1.0
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class Punchrange implements Serializable {
 | 
			
		||||
    /**
 | 
			
		||||
     * 范围名称
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "范围名称不能为空")
 | 
			
		||||
    private String punchName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "打卡范围不能为空")
 | 
			
		||||
    private String punchRange;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 颜色
 | 
			
		||||
     */
 | 
			
		||||
    @NotNull(message = "颜色不能为空")
 | 
			
		||||
    private String punchColor;
 | 
			
		||||
}
 | 
			
		||||
@ -1,9 +1,11 @@
 | 
			
		||||
package org.dromara.project.domain.dto.project;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.dromara.project.domain.bo.Punchrange;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author lilemy
 | 
			
		||||
@ -129,4 +131,10 @@ public class BusProjectUpdateReq implements Serializable {
 | 
			
		||||
     * 排序字段
 | 
			
		||||
     */
 | 
			
		||||
    private Long sort;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    private List<Punchrange> punchrangeList;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,62 @@
 | 
			
		||||
package org.dromara.project.domain.vo;
 | 
			
		||||
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
 | 
			
		||||
import org.dromara.common.excel.convert.ExcelDictConvert;
 | 
			
		||||
import io.github.linpeilie.annotations.AutoMapper;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围视图对象 bus_project_punchrange
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
@ExcelIgnoreUnannotated
 | 
			
		||||
@AutoMapper(target = BusProjectPunchrange.class)
 | 
			
		||||
public class BusProjectPunchrangeVo implements Serializable {
 | 
			
		||||
 | 
			
		||||
    @Serial
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelProperty(value = "")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目ID
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelProperty(value = "项目ID")
 | 
			
		||||
    private Long projectId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 范围名称
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelProperty(value = "范围名称")
 | 
			
		||||
    private String punchName;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelProperty(value = "打卡范围")
 | 
			
		||||
    private String punchRange;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 颜色
 | 
			
		||||
     */
 | 
			
		||||
    @ExcelProperty(value = "颜色")
 | 
			
		||||
    private String punchColor;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,15 @@
 | 
			
		||||
package org.dromara.project.mapper;
 | 
			
		||||
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import org.dromara.project.domain.vo.BusProjectPunchrangeVo;
 | 
			
		||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围Mapper接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
public interface BusProjectPunchrangeMapper extends BaseMapperPlus<BusProjectPunchrange, BusProjectPunchrangeVo> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,71 @@
 | 
			
		||||
package org.dromara.project.service;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import org.dromara.project.domain.BusProject;
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import org.dromara.project.domain.vo.BusProjectPunchrangeVo;
 | 
			
		||||
import org.dromara.project.domain.bo.BusProjectPunchrangeBo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围Service接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
public interface IBusProjectPunchrangeService extends IService<BusProjectPunchrange> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 主键
 | 
			
		||||
     * @return 项目打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    BusProjectPunchrangeVo queryById(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分页查询项目打卡范围列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo        查询条件
 | 
			
		||||
     * @param pageQuery 分页参数
 | 
			
		||||
     * @return 项目打卡范围分页列表
 | 
			
		||||
     */
 | 
			
		||||
    TableDataInfo<BusProjectPunchrangeVo> queryPageList(BusProjectPunchrangeBo bo, PageQuery pageQuery);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询符合条件的项目打卡范围列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 查询条件
 | 
			
		||||
     * @return 项目打卡范围列表
 | 
			
		||||
     */
 | 
			
		||||
    List<BusProjectPunchrangeVo> queryList(BusProjectPunchrangeBo bo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 项目打卡范围
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean insertByBo(BusProjectPunchrangeBo bo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 项目打卡范围
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean updateByBo(BusProjectPunchrangeBo bo);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验并批量删除项目打卡范围信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids     待删除的主键集合
 | 
			
		||||
     * @param isValid 是否进行有效性校验
 | 
			
		||||
     * @return 是否删除成功
 | 
			
		||||
     */
 | 
			
		||||
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,135 @@
 | 
			
		||||
package org.dromara.project.service.impl;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import org.dromara.common.core.utils.MapstructUtils;
 | 
			
		||||
import org.dromara.common.core.utils.StringUtils;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
 | 
			
		||||
import org.dromara.common.mybatis.core.page.PageQuery;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.dromara.project.domain.bo.BusProjectPunchrangeBo;
 | 
			
		||||
import org.dromara.project.domain.vo.BusProjectPunchrangeVo;
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import org.dromara.project.mapper.BusProjectPunchrangeMapper;
 | 
			
		||||
import org.dromara.project.service.IBusProjectPunchrangeService;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 项目打卡范围Service业务层处理
 | 
			
		||||
 *
 | 
			
		||||
 * @author Lion Li
 | 
			
		||||
 * @date 2025-07-28
 | 
			
		||||
 */
 | 
			
		||||
@RequiredArgsConstructor
 | 
			
		||||
@Service
 | 
			
		||||
public class BusProjectPunchrangeServiceImpl extends ServiceImpl<BusProjectPunchrangeMapper, BusProjectPunchrange>
 | 
			
		||||
    implements IBusProjectPunchrangeService {
 | 
			
		||||
 | 
			
		||||
    private final BusProjectPunchrangeMapper baseMapper;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 主键
 | 
			
		||||
     * @return 项目打卡范围
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public BusProjectPunchrangeVo queryById(Long id){
 | 
			
		||||
        return baseMapper.selectVoById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分页查询项目打卡范围列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo        查询条件
 | 
			
		||||
     * @param pageQuery 分页参数
 | 
			
		||||
     * @return 项目打卡范围分页列表
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public TableDataInfo<BusProjectPunchrangeVo> queryPageList(BusProjectPunchrangeBo bo, PageQuery pageQuery) {
 | 
			
		||||
        LambdaQueryWrapper<BusProjectPunchrange> lqw = buildQueryWrapper(bo);
 | 
			
		||||
        Page<BusProjectPunchrangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
 | 
			
		||||
        return TableDataInfo.build(result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询符合条件的项目打卡范围列表
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 查询条件
 | 
			
		||||
     * @return 项目打卡范围列表
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<BusProjectPunchrangeVo> queryList(BusProjectPunchrangeBo bo) {
 | 
			
		||||
        LambdaQueryWrapper<BusProjectPunchrange> lqw = buildQueryWrapper(bo);
 | 
			
		||||
        return baseMapper.selectVoList(lqw);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private LambdaQueryWrapper<BusProjectPunchrange> buildQueryWrapper(BusProjectPunchrangeBo bo) {
 | 
			
		||||
        Map<String, Object> params = bo.getParams();
 | 
			
		||||
        LambdaQueryWrapper<BusProjectPunchrange> lqw = Wrappers.lambdaQuery();
 | 
			
		||||
        lqw.orderByAsc(BusProjectPunchrange::getId);
 | 
			
		||||
        lqw.eq(bo.getProjectId() != null, BusProjectPunchrange::getProjectId, bo.getProjectId());
 | 
			
		||||
        lqw.like(StringUtils.isNotBlank(bo.getPunchName()), BusProjectPunchrange::getPunchName, bo.getPunchName());
 | 
			
		||||
        lqw.eq(StringUtils.isNotBlank(bo.getPunchRange()), BusProjectPunchrange::getPunchRange, bo.getPunchRange());
 | 
			
		||||
        lqw.eq(StringUtils.isNotBlank(bo.getPunchColor()), BusProjectPunchrange::getPunchColor, bo.getPunchColor());
 | 
			
		||||
        return lqw;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 项目打卡范围
 | 
			
		||||
     * @return 是否新增成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean insertByBo(BusProjectPunchrangeBo bo) {
 | 
			
		||||
        BusProjectPunchrange add = MapstructUtils.convert(bo, BusProjectPunchrange.class);
 | 
			
		||||
        validEntityBeforeSave(add);
 | 
			
		||||
        boolean flag = baseMapper.insert(add) > 0;
 | 
			
		||||
        if (flag) {
 | 
			
		||||
            bo.setId(add.getId());
 | 
			
		||||
        }
 | 
			
		||||
        return flag;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改项目打卡范围
 | 
			
		||||
     *
 | 
			
		||||
     * @param bo 项目打卡范围
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean updateByBo(BusProjectPunchrangeBo bo) {
 | 
			
		||||
        BusProjectPunchrange update = MapstructUtils.convert(bo, BusProjectPunchrange.class);
 | 
			
		||||
        validEntityBeforeSave(update);
 | 
			
		||||
        return baseMapper.updateById(update) > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 保存前的数据校验
 | 
			
		||||
     */
 | 
			
		||||
    private void validEntityBeforeSave(BusProjectPunchrange entity){
 | 
			
		||||
        //TODO 做一些数据校验,如唯一约束
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验并批量删除项目打卡范围信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param ids     待删除的主键集合
 | 
			
		||||
     * @param isValid 是否进行有效性校验
 | 
			
		||||
     * @return 是否删除成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
 | 
			
		||||
        if(isValid){
 | 
			
		||||
            //TODO 做一些业务上的校验,判断是否需要校验
 | 
			
		||||
        }
 | 
			
		||||
        return baseMapper.deleteByIds(ids) > 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package org.dromara.project.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.hutool.core.collection.CollectionUtil;
 | 
			
		||||
import cn.hutool.core.date.DateTime;
 | 
			
		||||
import cn.hutool.core.date.DateUtil;
 | 
			
		||||
import cn.hutool.core.util.PhoneUtil;
 | 
			
		||||
@ -9,6 +11,7 @@ import cn.hutool.json.JSONArray;
 | 
			
		||||
import cn.hutool.json.JSONObject;
 | 
			
		||||
import cn.hutool.json.JSONUtil;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
@ -37,7 +40,9 @@ import org.dromara.manager.weathermanager.WeatherManager;
 | 
			
		||||
import org.dromara.project.constant.BusProjectConstant;
 | 
			
		||||
import org.dromara.project.domain.BusProject;
 | 
			
		||||
import org.dromara.project.domain.BusProjectFile;
 | 
			
		||||
import org.dromara.project.domain.BusProjectPunchrange;
 | 
			
		||||
import org.dromara.project.domain.BusUserProjectRelevancy;
 | 
			
		||||
import org.dromara.project.domain.bo.Punchrange;
 | 
			
		||||
import org.dromara.project.domain.dto.project.BusProjectCreateReq;
 | 
			
		||||
import org.dromara.project.domain.dto.project.BusProjectCreateSubReq;
 | 
			
		||||
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
 | 
			
		||||
@ -45,6 +50,7 @@ import org.dromara.project.domain.dto.project.BusProjectUpdateReq;
 | 
			
		||||
import org.dromara.project.domain.vo.project.*;
 | 
			
		||||
import org.dromara.project.mapper.BusProjectMapper;
 | 
			
		||||
import org.dromara.project.service.IBusProjectFileService;
 | 
			
		||||
import org.dromara.project.service.IBusProjectPunchrangeService;
 | 
			
		||||
import org.dromara.project.service.IBusProjectService;
 | 
			
		||||
import org.dromara.project.service.IBusUserProjectRelevancyService;
 | 
			
		||||
import org.dromara.quality.service.IQltKnowledgeDocumentService;
 | 
			
		||||
@ -54,6 +60,7 @@ import org.dromara.system.domain.enums.SysDeptTypeEnum;
 | 
			
		||||
import org.dromara.system.mapper.SysDeptMapper;
 | 
			
		||||
import org.dromara.workflow.service.IFlwDefinitionService;
 | 
			
		||||
import org.springframework.beans.BeanUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.data.redis.core.StringRedisTemplate;
 | 
			
		||||
import org.springframework.data.redis.core.ValueOperations;
 | 
			
		||||
@ -122,6 +129,9 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
    @Resource
 | 
			
		||||
    private IBusProjectService self;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private IBusProjectPunchrangeService busProjectPunchrangeService;
 | 
			
		||||
 | 
			
		||||
    private final Cache<String, String> WEATHER_CACHE =
 | 
			
		||||
        Caffeine.newBuilder().initialCapacity(1024)
 | 
			
		||||
            .maximumSize(10000L)
 | 
			
		||||
@ -438,6 +448,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
     * @return 是否修改成功
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional
 | 
			
		||||
    public Boolean updateByBo(BusProjectUpdateReq req) {
 | 
			
		||||
        // 将实体类和 DTO 进行转换
 | 
			
		||||
        BusProject project = new BusProject();
 | 
			
		||||
@ -466,7 +477,21 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // 操作数据库
 | 
			
		||||
        return this.updateById(project);
 | 
			
		||||
        if (this.updateById(project)){
 | 
			
		||||
            //新增打卡范围
 | 
			
		||||
            if (!req.getPunchrangeList().isEmpty()) {
 | 
			
		||||
                //删除所有旧的范围
 | 
			
		||||
                busProjectPunchrangeService.remove(Wrappers.lambdaQuery(BusProjectPunchrange.class).eq(BusProjectPunchrange::getProjectId, project.getId()));
 | 
			
		||||
                List<Punchrange> punchrangeList = req.getPunchrangeList();
 | 
			
		||||
                List<BusProjectPunchrange> busProjectPunchranges = new ArrayList<>();
 | 
			
		||||
                BeanUtil.copyProperties(punchrangeList, busProjectPunchranges);
 | 
			
		||||
                if (!busProjectPunchrangeService.saveBatch(busProjectPunchranges)) {
 | 
			
		||||
                    throw new ServiceException("打卡范围增加失败", HttpStatus.ERROR);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
			
		||||
<!DOCTYPE mapper
 | 
			
		||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="org.dromara.project.mapper.BusProjectPunchrangeMapper">
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
		Reference in New Issue
	
	Block a user