zhoulisky 10 months ago
parent
commit
bf2d4a3aee

+ 62 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/AttendanceEntity.java

@@ -0,0 +1,62 @@
+
+package org.sky.scientific.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tenant.mp.TenantEntity;
+
+import java.io.Serial;
+
+/**
+ * 研发人员考勤表 实体类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Data
+@TableName("kd_attendance")
+@Schema(description = "研发人员考勤表")
+@EqualsAndHashCode(callSuper = true)
+public class AttendanceEntity extends TenantEntity {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+	@Schema(description = "研发人员id")
+	@NotBlank(message = "请选择研发人员")
+	private String technicianId;
+
+	@Schema(description = "姓名")
+	@TableField(exist = false)
+	private String name;
+
+	@Schema(description = "工号")
+	@TableField(exist = false)
+	private String number;
+
+	@Schema(description = "身份证号码")
+	@TableField(exist = false)
+	private String identityCard;
+
+	@Schema(description = "人员类型")
+	@TableField(exist = false)
+	private String personnelType;
+
+	@Schema(description="考勤时间,yyyyMMdd")
+	@NotNull(message = "请选择考勤时间")
+	private String workDate;
+
+	@Schema(description="出勤时长(小时)")
+	@NotNull(message = "请填写出勤时长(小时)")
+	@Min(value = 0, message = "请填写正确的出勤时长(小时)")
+	@Max(value = 24, message = "请填写正确的出勤时长(小时)")
+	private float workDuration;
+
+}

+ 34 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/AttendanceController.java

@@ -0,0 +1,34 @@
+package org.sky.scientific.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import lombok.AllArgsConstructor;
+import org.sky.core.boot.ctrl.KdController;
+import org.sky.core.tool.api.R;
+import org.sky.scientific.pojo.entity.AttendanceEntity;
+import org.sky.scientific.service.IAttendanceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/attendance")
+@Tag(name = "考勤管理")
+public class AttendanceController extends KdController {
+
+	@Resource
+	private IAttendanceService attendanceService;
+
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 1)
+	@Operation(summary = "研发人员考勤表-新增或修改")
+	public R submit(@Valid @RequestBody AttendanceEntity attendance) {
+		return R.status(attendanceService.submit(attendance));
+	}
+
+}

+ 0 - 10
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/TechnicianController.java

@@ -1,8 +1,6 @@
 
 package org.sky.scientific.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.v3.oas.annotations.Operation;
@@ -15,11 +13,7 @@ import org.sky.core.boot.ctrl.KdController;
 import org.sky.core.excel.util.ExcelUtil;
 import org.sky.core.mp.support.Condition;
 import org.sky.core.mp.support.Query;
-import org.sky.core.secure.KdUser;
-import org.sky.core.secure.annotation.IsAdmin;
-import org.sky.core.secure.utils.AuthUtil;
 import org.sky.core.tool.api.R;
-import org.sky.core.tool.constant.KdConstant;
 import org.sky.core.tool.utils.DateUtil;
 import org.sky.core.tool.utils.Func;
 import org.sky.scientific.excel.TechnicianExcel;
@@ -30,13 +24,11 @@ import org.sky.scientific.pojo.entity.XmTechnicianMonthlyEntity;
 import org.sky.scientific.pojo.vo.TechnicianVO;
 import org.sky.scientific.pojo.vo.XmTechnicianSummary;
 import org.sky.scientific.service.ITechnicianService;
-import org.sky.scientific.wrapper.TechnicianWrapper;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 技术人员花名册 控制器
@@ -155,6 +147,4 @@ public class TechnicianController extends KdController {
 	public R<IPage<XmTechnicianSummary>> xmTechnicianSummary(XmTechnicianMonthlyEntity entity, Query query){
 		return R.data(technicianService.xiangmucanyanrenyuanhuizongbiao(Condition.getPage(query), entity));
 	}
-
-
 }

+ 16 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AttendanceMapper.java

@@ -0,0 +1,16 @@
+
+package org.sky.scientific.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.sky.scientific.pojo.entity.AttendanceEntity;
+
+/**
+ * 考勤 Mapper 接口
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+public interface AttendanceMapper extends BaseMapper<AttendanceEntity> {
+
+
+}

+ 6 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/AttendanceMapper.xml

@@ -0,0 +1,6 @@
+<?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.sky.scientific.mapper.AttendanceMapper">
+
+
+</mapper>

+ 21 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/IAttendanceService.java

@@ -0,0 +1,21 @@
+
+package org.sky.scientific.service;
+
+import org.sky.core.mp.base.BaseService;
+import org.sky.scientific.pojo.entity.AttendanceEntity;
+
+/**
+ * 考勤管理 服务类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+public interface IAttendanceService extends BaseService<AttendanceEntity> {
+
+	/**
+	 * 研发人员考勤表-新增或修改
+	 * @param attendance
+	 * @return
+	 */
+	boolean submit(AttendanceEntity attendance);
+}

+ 38 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/AttendanceServiceImpl.java

@@ -0,0 +1,38 @@
+
+package org.sky.scientific.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.sky.core.mp.base.BaseServiceImpl;
+import org.sky.scientific.mapper.AttendanceMapper;
+import org.sky.scientific.pojo.entity.AttendanceEntity;
+import org.sky.scientific.service.IAttendanceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 考勤管理 服务实现类
+ *
+ * @author Kd
+ * @since 2025-06-29
+ */
+@Service
+public class AttendanceServiceImpl extends BaseServiceImpl<AttendanceMapper, AttendanceEntity> implements IAttendanceService {
+
+	@Override
+	public boolean submit(AttendanceEntity attendance) {
+		int affectNum = 0;
+		AttendanceEntity one = baseMapper.selectOne(Wrappers.<AttendanceEntity>lambdaQuery().
+			eq(AttendanceEntity::getTechnicianId, attendance.getTechnicianId()).eq(AttendanceEntity::getWorkDate, attendance.getWorkDate()));
+		if(one == null){
+			//新增
+			affectNum = baseMapper.insert(attendance);
+		}else {
+			//修改
+			LambdaQueryWrapper<AttendanceEntity> updateWrapper = Wrappers.<AttendanceEntity>lambdaQuery()
+				.eq(AttendanceEntity::getTechnicianId, attendance.getTechnicianId())
+				.eq(AttendanceEntity::getWorkDate, attendance.getWorkDate());
+			affectNum = baseMapper.update(attendance, updateWrapper);
+		}
+		return affectNum == 1;
+	}
+}

+ 0 - 1
kd-service/kd-system/src/main/java/org/sky/system/controller/TenantController.java

@@ -242,5 +242,4 @@ public class TenantController extends KdController {
 	}
 
 
-
 }