zhouli 10 months ago
parent
commit
64d9f88253

+ 26 - 0
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/vo/XmTechnicianSummary.java

@@ -0,0 +1,26 @@
+
+package org.sky.scientific.pojo.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.scientific.pojo.entity.CgZlEntity;
+import org.sky.scientific.pojo.entity.XmJdxbgEntity;
+import org.sky.scientific.pojo.entity.XmJtbEntity;
+import org.sky.scientific.pojo.entity.XmTechnicianMonthlyEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class XmTechnicianSummary {
+
+	@Schema(description = "研发项目名称")
+	private String xmmc;
+
+	@Schema(description = "研发人员列表")
+	private List<XmTechnicianMonthlyEntity> technicianList;
+}

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

@@ -28,6 +28,7 @@ import org.sky.scientific.pojo.dto.TechnicianDTO;
 import org.sky.scientific.pojo.entity.TechnicianEntity;
 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.*;
@@ -148,5 +149,12 @@ public class TechnicianController extends KdController {
 		technicianService.exportXmTechnicianMonthly(entity);
 	}
 
+	@GetMapping("xmcyryhzb")
+	@ApiOperationSupport(order = 25)
+	@Operation(summary = "项目参研人员汇总表")
+	public R<IPage<XmTechnicianSummary>> xmTechnicianSummary(XmTechnicianMonthlyEntity entity, Query query){
+		return R.data(technicianService.xiangmucanyanrenyuanhuizongbiao(Condition.getPage(query), entity));
+	}
+
 
 }

+ 10 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmTechnicianMonthlyMapper.java

@@ -9,9 +9,11 @@ import org.sky.scientific.pojo.dto.TechnicianDTO;
 import org.sky.scientific.pojo.entity.TechnicianEntity;
 import org.sky.scientific.pojo.entity.XmTechnicianMonthlyEntity;
 import org.sky.scientific.pojo.vo.TechnicianVO;
+import org.sky.scientific.pojo.vo.XmTechnicianSummary;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 每月实际参研人员名单 Mapper 接口
@@ -36,4 +38,12 @@ public interface XmTechnicianMonthlyMapper extends BaseMapper<XmTechnicianMonthl
 	 * @return
 	 */
 	Integer physicalDeleteXmTechnicianMonthlyByIds(List<Long> ids);
+
+	/**
+	 * 项目参研人员汇总表
+	 * @param page
+	 * @param entity
+	 * @return
+	 */
+	List<XmTechnicianSummary> xmTechnicianSummary(IPage<XmTechnicianSummary> page, @Param("ew") XmTechnicianMonthlyEntity entity);
 }

+ 38 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmTechnicianMonthlyMapper.xml

@@ -59,4 +59,42 @@
         <if test="ew.xmId!=null and ew.xmId>0">and xm.xm_id = #{ew.xmId}</if>
         <if test="ew.technicianId!=null and ew.technicianId!=''">and t.technician_id = #{ew.technicianId}</if>
     </select>
+
+    <resultMap id="ResultXmTechnicianSummary" type="org.sky.scientific.pojo.vo.XmTechnicianSummary">
+        <result column="XMMC" property="xmmc"/>
+        <collection property="technicianList" ofType="org.sky.scientific.pojo.entity.XmTechnicianMonthlyEntity">
+            <result column="technician_id" property="technicianId"/>
+            <result column="name" property="name"/>
+            <result column="number" property="number"/>
+            <result column="identity_card" property="identityCard"/>
+            <result column="secondary_unit" property="secondaryUnit"/>
+            <result column="department" property="department"/>
+            <result column="nature" property="nature"/>
+            <result column="situation" property="situation"/>
+            <result column="personnel_type" property="personnelType"/>
+        </collection>
+    </resultMap>
+
+    <select id="xmTechnicianSummary"
+            resultMap="ResultXmTechnicianSummary">
+        SELECT
+        xm.XMMC,
+        t.*
+        FROM kd_xm_technician_monthly m
+        LEFT JOIN (
+        SELECT temp.id as xm_id, XMBH,
+        COALESCE( (SELECT bgrz.BGHDZ FROM kd_xm_bgrz bgrz WHERE bgrz.XM_ID = temp.id AND bgrz.ZDMC = 'xmmc' AND DATE_FORMAT(bgrz.BGSXSJ, '%Y%m') >= #{ew.yearAndMonth} ORDER BY bgrz.BGSXSJ DESC LIMIT 1), temp.XMMC ) AS XMMC
+        FROM kd_xm temp
+        ) xm ON m.xm_id = xm.xm_id
+        LEFT JOIN (
+        SELECT t1.id AS technician_id,t1.`name`,t1.number,t1.identity_card,ttt.secondary_unit,ttt.department,ttt.nature,ttt.situation,ttt.personnel_type
+        FROM kd_technician t1
+        LEFT JOIN
+        (
+        SELECT kts.* FROM kd_technician_snapshot kts WHERE kts.year_and_month = #{ew.yearAndMonth}
+        ) ttt ON ttt.technician_id = t1.id
+        ) t ON t.technician_id = m.technician_id
+        WHERE m.year_and_month = #{ew.yearAndMonth}
+        GROUP BY xm.XMMC,t.technician_id
+    </select>
 </mapper>

+ 9 - 0
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/ITechnicianService.java

@@ -9,6 +9,7 @@ import org.sky.scientific.pojo.vo.TechnicianVO;
 import org.sky.scientific.excel.TechnicianExcel;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.sky.core.mp.base.BaseService;
+import org.sky.scientific.pojo.vo.XmTechnicianSummary;
 
 import java.util.HashMap;
 import java.util.List;
@@ -115,4 +116,12 @@ public interface ITechnicianService extends BaseService<TechnicianEntity> {
 	 * @return
 	 */
 	IPage<TechnicianEntity> selectTechnicianPageByDateInterval(IPage<TechnicianEntity> page, HashMap<String,String> param);
+
+	/**
+	 * 项目参研人员汇总表
+	 * @param page
+	 * @param entity
+	 * @return
+	 */
+	IPage<XmTechnicianSummary> xiangmucanyanrenyuanhuizongbiao(IPage<XmTechnicianSummary> page, XmTechnicianMonthlyEntity entity);
 }

+ 23 - 9
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/TechnicianServiceImpl.java

@@ -2,6 +2,7 @@
 package org.sky.scientific.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jakarta.annotation.Resource;
@@ -23,16 +24,14 @@ import org.sky.scientific.pojo.entity.TechnicianEntity;
 import org.sky.scientific.pojo.entity.XmTechnicianMonthlyEntity;
 import org.sky.scientific.pojo.entity.YsRyrgfyEntity;
 import org.sky.scientific.pojo.vo.TechnicianVO;
+import org.sky.scientific.pojo.vo.XmTechnicianSummary;
 import org.sky.scientific.service.ITechnicianService;
 import org.sky.system.cache.DictCache;
 import org.sky.system.pojo.enums.DictEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -167,10 +166,14 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 			monthlyEntity.setYearAndMonth(entity.getYearAndMonth());
 			monthlyEntity.setCreateUser(SecureUtil.getUserId());
 			monthlyEntity.setUpdateUser(SecureUtil.getUserId());
-//			if(xmTechnicianMonthlyMapper.selectCount(Wrappers.<XmTechnicianMonthlyEntity>lambdaQuery().eq(XmTechnicianMonthlyEntity::getYearAndMonth, entity.getYearAndMonth()).eq(XmTechnicianMonthlyEntity::getTechnicianId, technicianId)) == 0){
-//				xmTechnicianMonthlyMapper.insert(monthlyEntity);
-//			}
-			xmTechnicianMonthlyMapper.insertOrUpdate(monthlyEntity);
+
+			LambdaQueryWrapper<XmTechnicianMonthlyEntity> wrapper = Wrappers.<XmTechnicianMonthlyEntity>lambdaQuery().
+				eq(XmTechnicianMonthlyEntity::getYearAndMonth, entity.getYearAndMonth()).
+				eq(XmTechnicianMonthlyEntity::getTechnicianId, technicianId).
+				eq(XmTechnicianMonthlyEntity::getXmId, entity.getXmId());
+			if(xmTechnicianMonthlyMapper.selectCount(wrapper) == 0) {
+				xmTechnicianMonthlyMapper.insert(monthlyEntity);
+			}
 		}
 	}
 
@@ -182,10 +185,15 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 	@Override
 	public boolean submitXmTechnicianMonthly(XmTechnicianMonthlyEntity entity) {
 		int affectNum = 0;
+		entity.setId(null);
 		entity.setYearAndMonth(entity.getYearAndMonth());
 		entity.setCreateUser(SecureUtil.getUserId());
 		entity.setUpdateUser(SecureUtil.getUserId());
-		if(xmTechnicianMonthlyMapper.selectCount(Wrappers.<XmTechnicianMonthlyEntity>lambdaQuery().eq(XmTechnicianMonthlyEntity::getYearAndMonth, entity.getYearAndMonth()).eq(XmTechnicianMonthlyEntity::getTechnicianId, entity.getTechnicianId())) == 0) {
+		LambdaQueryWrapper<XmTechnicianMonthlyEntity> wrapper = Wrappers.<XmTechnicianMonthlyEntity>lambdaQuery().
+			eq(XmTechnicianMonthlyEntity::getYearAndMonth, entity.getYearAndMonth()).
+			eq(XmTechnicianMonthlyEntity::getTechnicianId, entity.getTechnicianId()).
+			eq(XmTechnicianMonthlyEntity::getXmId, entity.getXmId());
+		if(xmTechnicianMonthlyMapper.selectCount(wrapper) == 0) {
 			affectNum = xmTechnicianMonthlyMapper.insert(entity);
 		}else{
 			throw new ServiceException("科技人员已是项目在["+entity.getYearAndMonth()+"]的参研人员,请勿重复新增");
@@ -231,4 +239,10 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 		List<TechnicianEntity> list = baseMapper.selectByDateInterval(page, param);
 		return page.setRecords(list);
 	}
+
+	@Override
+	public IPage<XmTechnicianSummary> xiangmucanyanrenyuanhuizongbiao(IPage<XmTechnicianSummary> page, XmTechnicianMonthlyEntity entity) {
+		List<XmTechnicianSummary> summary = xmTechnicianMonthlyMapper.xmTechnicianSummary(page, entity);
+		return page.setRecords(summary);
+	}
 }