Browse Source

0000000222

zhoulisky 6 months ago
parent
commit
573847db3f

+ 7 - 2
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/entity/TechnicianEntity.java

@@ -8,7 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.sky.core.tenant.mp.TenantEntity;
@@ -43,7 +44,8 @@ public class TechnicianEntity extends TenantEntity {
 	private Long id;
 
 	@Schema(description = "姓名")
-	@NotNull
+	@NotBlank(message = "姓名不能为空")
+	@Size(max = 20, message = "姓名长度不能超过20个字符")
 	private String name;
 
 	@Schema(description = "唯一标识")
@@ -77,6 +79,7 @@ public class TechnicianEntity extends TenantEntity {
 	private String postLocation;
 
 	@Schema(description = "用工性质")
+	@NotBlank(message = "用工性质不能为空")
 	private String nature;
 
 	@Schema(description = "是否为外聘科技人员")
@@ -105,9 +108,11 @@ public class TechnicianEntity extends TenantEntity {
 	private String practicingRequirement;
 
 	@Schema(description = "参研情况")
+	@NotBlank(message = "参研情况不能为空")
 	private String situation;
 
 	@Schema(description = "人员类型")
+	@NotBlank(message = "人员类型不能为空")
 	private String personnelType;
 
 	@Schema(description = "所属年月")

+ 2 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/EnterpriseController.java

@@ -115,8 +115,8 @@ public class EnterpriseController extends KdController {
 	@GetMapping("/qyyjkfxmqk/export")
 	@ApiOperationSupport(order = 32)
 	@Operation(summary = "107-1-企业研究开发项目情况-导出")
-	public void export107_1(HttpServletResponse response, String year) {
-		enterpriseInfoService.exportQyyjkfxmqk107_1(response, year);
+	public void export107_1(HttpServletResponse response, String yearAndMonth) {
+		enterpriseInfoService.exportQyyjkfxmqk107_1(response, yearAndMonth);
 	}
 
 	@GetMapping("qyyjkfhdjxgqk")

+ 18 - 29
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/TechnicianExcel.java

@@ -2,12 +2,10 @@
 package org.sky.scientific.excel;
 
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
-import org.hibernate.validator.constraints.Length;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -25,11 +23,11 @@ public class TechnicianExcel implements Serializable {
 	@Serial
 	private static final long serialVersionUID = 1L;
 
-	@ExcelProperty(index = 0 )
 	private String xh;
 
- 	@NotBlank(message = "请填写姓名")
-	@Length(max = 20, message = "姓名长度不能超过20个字符")
+	@Schema(description = "姓名")
+	@NotBlank(message = "姓名不能为空")
+	@Size(max = 20, message = "姓名长度不能超过20个字符")
 	private String name;
 
 	@Schema(description = "工号")
@@ -38,53 +36,44 @@ public class TechnicianExcel implements Serializable {
 	@Schema(description = "身份证号")
  	private String idCard;
 
-	@NotNull(message = "请选择性别")
- 	private Integer gender;
+  	private Integer gender;
 
 	@Schema(description = "性别")
  	private String genderName;
 
 	@Schema(description = "出生日期")
-	@NotBlank(message = "请选择出生日期")
- 	private String birthday;
+  	private String birthday;
 
 	@Schema(description = "民族")
-	@NotBlank(message = "请填写民族")
- 	private String ethnic;
+  	private String ethnic;
 
 	@Schema(description = "所属二级单位/部门")
  	private String department;
 
 	@Schema(description = "岗位职务")
-	@NotBlank(message = "岗位职务不能为空")
  	private String post;
 
 	@Schema(description = "岗位所在地")
-	@NotBlank(message = "岗位所在地不能为空")
- 	private String postLocation;
+  	private String postLocation;
 
 	@Schema(description = "用工性质")
-	@NotBlank(message = "请选择用工性质")
- 	private String nature;
+	@NotBlank(message = "用工性质不能为空")
+  	private String nature;
 
 	@Schema(description = "入职时间")
-	@NotBlank(message = "请填写入职时间")
- 	private String hireDate;
+  	private String hireDate;
 
 	@Schema(description = "最高学历")
-	@NotBlank(message = "请选择最高学历")
- 	private String education;
+  	private String education;
 
 	@Schema(description = "最高学位")
  	private String degree;
 
 	@Schema(description = "最高学历学校")
-	@NotBlank(message = "请填写最高学历学校")
- 	private String schoolName;
+  	private String schoolName;
 
 	@Schema(description = "最高学历专业名称")
-	@NotBlank(message = "请填写最高学历专业名称")
- 	private String major;
+  	private String major;
 
 	@Schema(description = "职称")
   	private String rank;
@@ -96,11 +85,11 @@ public class TechnicianExcel implements Serializable {
  	private String remark;
 
 	@Schema(description = "参研情况")
-	@NotBlank(message = "请选择参研情况")
- 	private String situation;
+	@NotBlank(message = "参研情况不能为空")
+  	private String situation;
 
 	@Schema(description = "人员类型")
-	@NotBlank(message = "请选择人员类型")
- 	private String personnelType;
+	@NotBlank(message = "人员类型不能为空")
+  	private String personnelType;
 
 }

+ 1 - 1
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/listener/AssetImportListener.java

@@ -45,7 +45,7 @@ public class AssetImportListener extends BaseReadListener {
 		excel.setYt(data.get(5));
 		excel.setKssj(ValidationUtils.safeParseDate(data.get(6), DateUtil.PATTERN_DATE));
 		if (excel.getKssj() == null) {
-			errors.add("申请日为空或格式错误,yyyy-MM-dd");
+			errors.add("开始日期为空或格式错误,yyyy-MM-dd");
 		}
  		excel.setSysm(ValidationUtils.safeParseInteger(data.get(7)));
  		excel.setZcyz(ValidationUtils.safeParseBigDecimal(data.get(9)));

+ 8 - 3
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/listener/CgZlImportListener.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.sky.core.log.exception.ServiceException;
 import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.Func;
 import org.sky.scientific.excel.CgZlExcel;
 import org.sky.scientific.utils.ImportResult;
 import org.sky.scientific.utils.ValidationUtils;
@@ -56,9 +57,13 @@ public class CgZlImportListener implements ReadListener<Map<Integer, String>> {
 		if(excel.getShenqingRq()==null){
 			errors.add("申请日为空或格式错误,yyyy-MM-dd");
 		}
-		excel.setShouquanRq(ValidationUtils.safeParseDate(data.get(8), DateUtil.PATTERN_DATE));
-		if(excel.getShouquanRq()==null){
-			errors.add("授权日为空或格式错误,yyyy-MM-dd");
+
+		String shouquanRq = data.get(8);
+		if(Func.isNoneBlank(shouquanRq)){
+			excel.setShouquanRq(ValidationUtils.safeParseDate(shouquanRq, DateUtil.PATTERN_DATE));
+			if(Func.isNull(excel.getShouquanRq())){
+				errors.add("授权日为空或格式错误,yyyy-MM-dd");
+			}
 		}
 		excel.setSqdw(data.get(9));
 		excel.setZlqr(data.get(10));

+ 26 - 15
kd-service/kd-scientific/src/main/java/org/sky/scientific/excel/listener/TechnicianImportListener.java

@@ -42,35 +42,46 @@ public class TechnicianImportListener extends BaseReadListener {
 		excel.setName(data.get(1));
 		excel.setNumber(data.get(2));
 		excel.setIdCard(data.get(3));
+
+		if(Func.isBlank(excel.getNumber()) && Func.isBlank(excel.getIdCard())){
+			errors.add("工号和身份证号不能都为空");
+		}
+
 		String sexName = data.get(4);
 		List<String> sexList = DictCache.getList(DictEnum.SEX.getName()).stream().map(Dict::getDictValue).toList();
-		if(Func.isNotEmpty(sexList) && !sexList.contains(sexName)){
-			errors.add("性别错误,请重新选择");
+		if (Func.isNotBlank(sexName)) {
+			if(Func.isNotEmpty(sexList) && !sexList.contains(sexName)){
+				errors.add("性别错误,请重新选择");
+			}else {
+				excel.setGender(Integer.valueOf(DictCache.getKey(DictEnum.SEX, sexName)));
+			}
 		}
-		excel.setGender(Integer.valueOf(DictCache.getKey(DictEnum.SEX, sexName)));
-
-		if (!ValidationUtils.isValidDateFormat(data.get(5), DateUtil.PATTERN_DATE)) {
+		String birthday = data.get(5);
+		if (Func.isNotBlank(birthday) && !ValidationUtils.isValidDateFormat(birthday, DateUtil.PATTERN_DATE)) {
 			errors.add("出生日期为空或格式错误,yyyy-MM-dd");
 		}
-		excel.setBirthday(data.get(5));
+		excel.setBirthday(birthday);
+
 		excel.setEthnic(data.get(6));
 		excel.setDepartment(data.get(7));
 		excel.setPost(data.get(8));
 		excel.setPostLocation(data.get(9));
 		String nature = data.get(10);
 		List<String> natureList = DictCache.getList("yonggongxingzhi").stream().map(Dict::getDictValue).toList();
-		if(Func.isNotEmpty(natureList) && !natureList.contains(nature)){
+		if (Func.isNotBlank(nature) && Func.isNotEmpty(natureList) && !natureList.contains(nature)) {
 			errors.add("用工性质错误,请重新选择");
 		}
 		excel.setNature(nature);
-		if (!ValidationUtils.isValidDateFormat(data.get(11), DateUtil.PATTERN_DATE)) {
+
+		String hireDate = data.get(11);
+		if (Func.isNotBlank(hireDate) && !ValidationUtils.isValidDateFormat(hireDate, DateUtil.PATTERN_DATE)) {
 			errors.add("入职时间为空或格式错误,yyyy-MM-dd");
 		}
-		excel.setHireDate(data.get(11));
+		excel.setHireDate(hireDate);
 
 		String education = data.get(12);
 		List<String> educationList = DictCache.getList("xueli").stream().map(Dict::getDictValue).toList();
-		if(Func.isNotEmpty(educationList) && !educationList.contains(education)){
+		if (Func.isNotBlank(education) && Func.isNotEmpty(educationList) && !educationList.contains(education)) {
 			errors.add("最高学历错误,请重新选择");
 		}
 		excel.setEducation(education);
@@ -80,9 +91,9 @@ public class TechnicianImportListener extends BaseReadListener {
 		excel.setMajor(data.get(15));
 
 		String rank = data.get(16);
-		if(Func.isNotBlank(rank)){
+		if (Func.isNotBlank(rank)) {
 			List<String> rankList = DictCache.getList("zhicheng").stream().map(Dict::getDictValue).toList();
-			if(Func.isNotEmpty(rankList) && !rankList.contains(rank.trim())){
+			if (Func.isNotEmpty(rankList) && !rankList.contains(rank.trim())) {
 				errors.add("职称错误,请重新选择");
 			}
 			excel.setRank(rank);
@@ -93,14 +104,14 @@ public class TechnicianImportListener extends BaseReadListener {
 
 		String situation = data.get(19);
 		List<String> situationList = DictCache.getList("canyanqingkuang").stream().map(Dict::getDictValue).toList();
-		if(Func.isNotEmpty(situationList) && !situationList.contains(situation)){
+		if (Func.isNotBlank(situation) && Func.isNotEmpty(situationList) && !situationList.contains(situation)) {
 			errors.add("参研情况错误,请重新选择");
 		}
- 		excel.setSituation(situation);
+		excel.setSituation(situation);
 
 		String personnelType = data.get(20);
 		List<String> personnelTypeList = DictCache.getList("renyuanleixing").stream().map(Dict::getDictValue).toList();
-		if(Func.isNotEmpty(personnelTypeList) && !personnelTypeList.contains(personnelType)){
+		if (Func.isNotBlank(personnelType) && Func.isNotEmpty(personnelTypeList) && !personnelTypeList.contains(personnelType)) {
 			errors.add("人员类型错误,请重新选择");
 		}
 		excel.setPersonnelType(personnelType);

+ 4 - 4
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmBgrzMapper.xml

@@ -41,8 +41,9 @@
             xmbh,
             xmmc,
             xmsqdwid,
-            xmfzr,
-            t.name as xmfzrxm,
+            CONCAT_WS('/', ( select name from kd_department d2 where d2.id = (SELECT parent_id from kd_department where id = xm.xmsqdwid )), (SELECT name from kd_department where id = xm.xmsqdwid )) as xmsqdw ,
+        xmfzr,
+            (SELECT name from kd_technician t where t.id = xm.xmfzr ) xmfzrxm,
             rz.ZDMC,BGQDZ,BGHDZ,BGSXSJ,BGYY,rz.attachment
         FROM kd_xm_bgrz rz
         left join
@@ -55,8 +56,7 @@
                 COALESCE(get_xm_info(m.id, 'XMSQDWID', null),m.XMSQDWID) as xmsqdwid
             FROM kd_xm m
         )xm on rz.xm_id = xm.id
-        LEFT JOIN kd_technician t on t.id = xm.xmfzr
-        <where>
+         <where>
             <if test="ew.xmId!=null">and rz.XM_ID = #{ew.xmId}</if>
         </where>
     </select>

+ 1 - 2
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmJdxbgMapper.xml

@@ -37,7 +37,7 @@
             xm.xmbh as 'xmEntity.xmbh',
             xm.xmmc AS 'xmEntity.xmmc',
             xm.xmfzr AS 'xmEntity.xmfzr',
-            t.name as 'xmEntity.xmfzrxm',
+            (SELECT name from kd_technician t where t.id = xm.xmfzr ) 'xmEntity.xmfzrxm',
             xm.xmsqdwid AS 'xmEntity.xmsqdwid',
             xm.xmkssj as 'xmEntity.xmkssj',
             xm.xmjssj as 'xmEntity.xmjssj',
@@ -57,7 +57,6 @@
                 COALESCE(get_xm_info(m.id, 'XMSQDWID', null),m.XMSQDWID) as xmsqdwid
             FROM kd_xm m
         )xm on kxj.xm_id = xm.id
-        left join kd_technician t on t.id = xm.xmfzr
         WHERE kxj.tenant_id = #{ew.tenantId}
         <if test="ew.xmId!=null">and kxj.XM_ID = #{ew.xmId}</if>
         order by kxj.fill_date asc

+ 1 - 9
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/CgJsbzServiceImpl.java

@@ -79,15 +79,7 @@ public class CgJsbzServiceImpl extends BaseServiceImpl<CgJsbzMapper, CgJsbzEntit
 			if (isDuplicate(jsbzDTO)) {
 				throw new ServiceException("标准号/标准名称已存在");
 			}
-//			List<CgJsbzEntity> dbList = baseMapper.selectList(Wrappers.<CgJsbzEntity>lambdaQuery().eq(CgJsbzEntity::getZbmc, excel.getZbmc()).or().eq(CgJsbzEntity::getZbh, excel.getZbh()));
-//			if (dbList.isEmpty()) {
-//				this.save(jsbzDTO);
-//			} else if (dbList.size() == 1) {
-//				jsbzDTO.setId(dbList.get(0).getId());
-//				this.updateById(jsbzDTO);
-//			} else {
-//				throw new ServiceException("标准号/标准名称已存在");
-//			}
+ 			this.saveOrUpdate(jsbzDTO);
 		}
 	}
 

+ 3 - 3
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/CgRjzzqServiceImpl.java

@@ -62,9 +62,9 @@ public class CgRjzzqServiceImpl extends BaseServiceImpl<CgRjzzqMapper, CgRjzzqEn
 		}
 		for (CgRjzzqExcel excel : dataList) {
 			CgRjzzqEntity entity = Objects.requireNonNull(BeanUtil.copyProperties(excel, CgRjzzqDTO.class));
-//			if (isDuplicate(entity)) {
-//				throw new ServiceException("软件名称已存在");
-//			}
+			if (isDuplicate(entity)) {
+				throw new ServiceException("软件名称已存在");
+			}
 			if (StringUtil.isNotBlank(excel.getXmbh())) {
 				Long xmId = xmMapper.getXmIdByXmmcOrXmbh(null, null, excel.getXmbh());
 				if (xmId == null) {

+ 1 - 1
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmBgrzServiceImpl.java

@@ -70,7 +70,7 @@ public class XmBgrzServiceImpl extends BaseServiceImpl<XmBgrzMapper, XmBgrzEntit
 	public IPage<XmBgrzVO> selectBgrzPage(XmBgrzEntity xmBgrz, IPage<XmBgrzVO> page) {
 		List<XmBgrzVO> voList = baseMapper.selectBgrzPage(page, xmBgrz);
 		for (XmBgrzVO vo : voList) {
-			vo.setXmsqdw(departmentMapper.getFullNameById(vo.getXmsqdwid()));
+//			vo.setXmsqdw(departmentMapper.getFullNameById(vo.getXmsqdwid()));
 			if ("XMSQDWID".equalsIgnoreCase(vo.getZdmc())) {
 				// 项目申请单位
 				vo.setBgqdz(departmentMapper.getFullNameById(Long.parseLong(vo.getBgqdz())));