Browse Source

777777777777

zhoulisky 5 months ago
parent
commit
8a054afa30

+ 3 - 3
kd-service-api/kd-scientific-api/src/main/java/org/sky/scientific/pojo/dto/XmDTO.java

@@ -20,9 +20,9 @@ public class XmDTO extends XmEntity {
 	@Serial
 	@Serial
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
-//	@Schema(description = "项目预算总额-每年的预算,用于接收前端的数组")
-//	private List<HashMap<String, Float>> yearAmountList;
-
 	@Schema(description = "年月,如:202507")
 	@Schema(description = "年月,如:202507")
 	private String yearAndMonth;
 	private String yearAndMonth;
+
+	@Schema(description = "1:项目预算,0:其他")
+	private Integer use=0;
 }
 }

+ 7 - 34
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmMapper.xml

@@ -63,8 +63,10 @@
             xm.XMKSSJ,
             xm.XMKSSJ,
             COALESCE(get_xm_info(xm.id,'XMJSSJ', #{ew.yearAndMonth}),XMJSSJ) AS XMJSSJ
             COALESCE(get_xm_info(xm.id,'XMJSSJ', #{ew.yearAndMonth}),XMJSSJ) AS XMJSSJ
         FROM kd_xm xm
         FROM kd_xm xm
-        WHERE DATE_FORMAT(XMKSSJ, '%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth}
-        and xm.status != 0
+        WHERE xm.status != 0
+          <if test = "ew.use==0">
+              and #{ew.yearAndMonth} between DATE_FORMAT(xm.XMKSSJ, '%Y%m') and date_format(COALESCE(get_xm_info(xm.id, 'XMJSSJ', #{ew.yearAndMonth}),xm.XMJSSJ), '%Y%m')
+          </if>
     </select>
     </select>
 
 
     <select id="selectXmListByYear" resultMap="ResultMap">
     <select id="selectXmListByYear" resultMap="ResultMap">
@@ -76,7 +78,8 @@
             COALESCE(get_xm_info(xm.id,'XMJSSJ', #{year}),XMJSSJ) AS XMJSSJ,
             COALESCE(get_xm_info(xm.id,'XMJSSJ', #{year}),XMJSSJ) AS XMJSSJ,
             COALESCE(get_xm_info(xm.id,'STATUS', #{year}),STATUS) AS status
             COALESCE(get_xm_info(xm.id,'STATUS', #{year}),STATUS) AS status
         FROM kd_xm xm
         FROM kd_xm xm
-        WHERE #{year} between DATE_FORMAT(XMKSSJ, '%Y') and DATE_FORMAT(COALESCE(get_xm_info(xm.id,'XMJSSJ', #{year}),XMJSSJ), '%Y')
+        WHERE xm.status != 0
+            and #{year} between DATE_FORMAT(XMKSSJ, '%Y') and DATE_FORMAT(COALESCE(get_xm_info(xm.id,'XMJSSJ', #{year}),XMJSSJ), '%Y')
     </select>
     </select>
 
 
     <select id="summaryPage" resultType="org.sky.scientific.pojo.vo.XmSummary">
     <select id="summaryPage" resultType="org.sky.scientific.pojo.vo.XmSummary">
@@ -107,7 +110,7 @@
               and
               and
                 (
                 (
                     #{ew.yearAndMonth} between DATE_FORMAT(xm.XMKSSJ, '%Y%m') and date_format(COALESCE(get_xm_info(xm.id, 'XMJSSJ', #{ew.yearAndMonth}),xm.XMJSSJ), '%Y%m')
                     #{ew.yearAndMonth} between DATE_FORMAT(xm.XMKSSJ, '%Y%m') and date_format(COALESCE(get_xm_info(xm.id, 'XMJSSJ', #{ew.yearAndMonth}),xm.XMJSSJ), '%Y%m')
-                    or (xm.XMKSSJ is null and xm.status=0 and DATE_FORMAT(xm.create_time, '%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth})
+                    or (xm.XMKSSJ is null and xm.status=0)
                 )
                 )
         <if test="ew.xmbh!=null and ew.xmbh!=''">and xm.XMBH like concat('%',#{ew.xmbh},'%')</if>
         <if test="ew.xmbh!=null and ew.xmbh!=''">and xm.XMBH like concat('%',#{ew.xmbh},'%')</if>
         <if test="ew.xmmc!=null and ew.xmmc!=''">and COALESCE(get_xm_info(xm.id, 'XMMC', #{ew.yearAndMonth}), xm.XMMC) like concat('%',#{ew.xmmc},'%')</if>
         <if test="ew.xmmc!=null and ew.xmmc!=''">and COALESCE(get_xm_info(xm.id, 'XMMC', #{ew.yearAndMonth}), xm.XMMC) like concat('%',#{ew.xmmc},'%')</if>
@@ -116,36 +119,6 @@
         <if test="ew.status!=null">and COALESCE(get_xm_info(xm.id, 'STATUS', #{ew.yearAndMonth}), xm.STATUS) = #{ew.status}</if>
         <if test="ew.status!=null">and COALESCE(get_xm_info(xm.id, 'STATUS', #{ew.yearAndMonth}), xm.STATUS) = #{ew.status}</if>
     </select>
     </select>
 
 
-<!--    <select id="summaryPage" resultType="org.sky.scientific.pojo.vo.XmSummary">-->
-<!--        SELECT-->
-<!--        xm.id, xm.xmbh,xm.xmkssj,-->
-<!--        COALESCE(get_xm_info(xm.id, 'XMMC', #{ew.yearAndMonth}), xm.XMMC) AS xmmc,-->
-<!--        COALESCE(get_xm_info(xm.id, 'XMFZR', #{ew.yearAndMonth}), xm.XMFZR) AS xmfzr,-->
-<!--        tech.name as xmfzrxm,-->
-<!--        COALESCE(get_xm_info(xm.id, 'XMSQDWID', #{ew.yearAndMonth}), xm.XMSQDWID) AS xmsqdwid,-->
-<!--         COALESCE(get_xm_info(xm.id, 'XMJSSJ', #{ew.yearAndMonth}), xm.XMJSSJ) AS xmjssj,-->
-<!--        COALESCE(get_xm_info(xm.id, 'XMYSZEMX', #{ew.yearAndMonth}), xm.XMYSZEMX) AS xmyszemx,-->
-<!--        COALESCE(get_xm_info(xm.id, 'STATUS', #{ew.yearAndMonth}), xm.STATUS) AS status,-->
-<!--        LXBG as lxbg,-->
-<!--        (select count(*) from kd_xm_jdxbg jdxbg where jdxbg.xm_id = xm.id and date_format(jdxbg.fill_date,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as jdxbgCount,-->
-<!--        (select count(*) from kd_xm_jtb jtb where jtb.xm_id = xm.id and date_format(jtb.tbsj,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as ysbgCount,-->
-<!--        (select count(*) from kd_cg_zl zl where zl.xm_id = xm.id and zl.ZLLX = '发明专利' and date_format(zl.SHOUQUAN_RQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as fmzlCount,-->
-<!--        (select count(*) from kd_cg_zl zl where zl.xm_id = xm.id and zl.ZLLX = '实用新型专利' and date_format(zl.SHOUQUAN_RQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as syxxzlCount,-->
-<!--        (select count(*) from kd_cg_rjzzq rjzzq where rjzzq.xm_id = xm.id and date_format(rjzzq.DJPZRQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as rzCount,-->
-<!--        (select count(*) from kd_cg_jsbz jsbz where jsbz.xm_id = xm.id  and date_format(jsbz.SSRQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as bzCount,-->
-<!--        (select count(*) from kd_cg_kylw kylw where kylw.xm_id = xm.id  and date_format(kylw.FBRQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as lwCount,-->
-<!--        (select count(*) from kd_cg_qt qt where qt.xm_id = xm.id  and date_format(qt.SHOUQUAN_RQ,'%Y%m') between concat(left(#{ew.yearAndMonth},4),'01') and #{ew.yearAndMonth}) as qtCount,-->
-<!--        (select ifnull(sum(WWFYJE), 0) from kd_xm_wwxm ww where ww.XM_ID = xm.id and ww.year_and_month = left(#{ew.yearAndMonth}, 4)) as wwAmount-->
-<!--        FROM kd_xm xm-->
-<!--        LEFT JOIN kd_technician tech ON tech.id = COALESCE(get_xm_info(xm.id, 'XMFZR', #{ew.yearAndMonth}), xm.XMFZR)-->
-<!--        WHERE xm.tenant_id = #{ew.tenantId} and DATE_FORMAT(xm.XMKSSJ, '%Y%m') <![CDATA[<=]]> #{ew.yearAndMonth}-->
-<!--        <if test="ew.xmbh!=null and ew.xmbh!=''">and xm.XMBH like concat('%',#{ew.xmbh},'%')</if>-->
-<!--        <if test="ew.xmmc!=null and ew.xmmc!=''">and COALESCE(get_xm_info(xm.id, 'XMMC', #{ew.yearAndMonth}), xm.XMMC) like concat('%',#{ew.xmmc},'%')</if>-->
-<!--        <if test="ew.xmfzrxm!=null and ew.xmfzrxm!=''">and tech.name like concat('%', #{ew.xmfzrxm},'%')</if>-->
-<!--        <if test="ew.xmsqdw!=null and ew.xmsqdw!=''">and CONCAT_WS('/',(SELECT name FROM kd_department d2 WHERE d2.id = d.parent_id), d.`name`) like concat('%',#{ew.xmsqdw},'%')</if>-->
-<!--        <if test="ew.status!=null">and COALESCE(get_xm_info(xm.id, 'STATUS', #{ew.yearAndMonth}), xm.STATUS) = #{ew.status}</if>-->
-<!--    </select>-->
-
     <select id="selectYszb" resultType="org.sky.scientific.pojo.vo.XmYszbVO">
     <select id="selectYszb" resultType="org.sky.scientific.pojo.vo.XmYszbVO">
         SELECT xm.id as xmId,xm.XMKSSJ,
         SELECT xm.id as xmId,xm.XMKSSJ,
             COALESCE(get_xm_info(xm.id, 'XMMC', null), xm.XMMC) AS xmmc,
             COALESCE(get_xm_info(xm.id, 'XMMC', null), xm.XMMC) AS xmmc,

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

@@ -110,11 +110,10 @@ public class AssetServiceImpl extends BaseServiceImpl<AssetMapper, AssetEntity>
 		for (Object excel : data) {
 		for (Object excel : data) {
 			AssetExcel excel1 = (AssetExcel) excel;
 			AssetExcel excel1 = (AssetExcel) excel;
 			AssetEntity asset = Objects.requireNonNull(BeanUtil.copyProperties(excel, AssetDTO.class));
 			AssetEntity asset = Objects.requireNonNull(BeanUtil.copyProperties(excel, AssetDTO.class));
-			String identifier = asset.getZcbm() + ":" + asset.getZcmc();
-			if (idenfifierList.contains(identifier)) {
-				throw new ServiceException("资产【" + asset.getZcbm() + "," + asset.getZcmc() + "】已存在,导入失败!");
+ 			if (idenfifierList.contains(asset.getZcbm())) {
+				throw new ServiceException("资产【" + asset.getZcbm() + "】已存在,导入失败!");
 			}
 			}
-			idenfifierList.add(identifier);
+			idenfifierList.add(asset.getZcbm());
 			asset.setYearAndMonth(yearAndMonth);
 			asset.setYearAndMonth(yearAndMonth);
 
 
 			validateAsset(asset);
 			validateAsset(asset);

+ 15 - 6
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/TechnicianServiceImpl.java

@@ -77,16 +77,25 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 		if (StringUtil.isBlank(technician.getYearAndMonth())) {
 		if (StringUtil.isBlank(technician.getYearAndMonth())) {
 			throw new ServiceException("参数yearAndMonth不能为空");
 			throw new ServiceException("参数yearAndMonth不能为空");
 		}
 		}
-		if (StringUtil.isBlank(technician.getNumber()) && StringUtil.isBlank(technician.getIdCard())) {
+		if (StringUtil.isAllBlank(technician.getNumber(),technician.getIdCard())) {
 			throw new ServiceException("工号和身份证号码不能同时为空");
 			throw new ServiceException("工号和身份证号码不能同时为空");
 		}
 		}
-
+		technician.setNumber(Func.isBlank(technician.getNumber()) ? null : technician.getNumber().trim());
+		technician.setIdCard(Func.isBlank(technician.getIdCard()) ? null : technician.getIdCard().trim());
 		String unicode = baseMapper.getUnicodeByNumberAndIdentityCard(technician.getNumber(), technician.getIdCard());
 		String unicode = baseMapper.getUnicodeByNumberAndIdentityCard(technician.getNumber(), technician.getIdCard());
 		if(Func.isBlank(unicode)){
 		if(Func.isBlank(unicode)){
 			unicode = generateUnicode();
 			unicode = generateUnicode();
 		}else {
 		}else {
 			if(baseMapper.selectCount(Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getUnicode, unicode).eq(TechnicianEntity::getYearAndMonth, technician.getYearAndMonth())) > 0){
 			if(baseMapper.selectCount(Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getUnicode, unicode).eq(TechnicianEntity::getYearAndMonth, technician.getYearAndMonth())) > 0){
-				throw new ServiceException("人员已存在");
+				StringBuilder sb = new StringBuilder();
+				if(Func.isNotBlank(technician.getNumber()) && Func.isBlank(technician.getIdCard())){
+					sb.append("工号已存在");
+				}else if(Func.isNotBlank(technician.getIdCard()) && Func.isBlank(technician.getNumber())){
+					sb.append("身份证号已存在");
+				}else {
+					sb.append("工号/身份证号已存在");
+				}
+				throw new ServiceException(sb.toString());
 			}
 			}
 		}
 		}
 		technician.setUnicode(unicode);
 		technician.setUnicode(unicode);
@@ -105,7 +114,8 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 		if (Func.isBlank(technician.getUnicode())) {
 		if (Func.isBlank(technician.getUnicode())) {
 			throw new ServiceException("参数unicode不能为空");
 			throw new ServiceException("参数unicode不能为空");
 		}
 		}
-
+		technician.setNumber(Func.isBlank(technician.getNumber()) ? null : technician.getNumber().trim());
+		technician.setIdCard(Func.isBlank(technician.getIdCard()) ? null : technician.getIdCard().trim());
 		//修改technician.getYearAndMonth()及之后月份的数据
 		//修改technician.getYearAndMonth()及之后月份的数据
 		LambdaQueryWrapper<TechnicianEntity> updateWrapper = Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getUnicode, technician.getUnicode()).ge(TechnicianEntity::getYearAndMonth, technician.getYearAndMonth());
 		LambdaQueryWrapper<TechnicianEntity> updateWrapper = Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getUnicode, technician.getUnicode()).ge(TechnicianEntity::getYearAndMonth, technician.getYearAndMonth());
 		technician.setId(null);
 		technician.setId(null);
@@ -188,8 +198,7 @@ public class TechnicianServiceImpl extends BaseServiceImpl<TechnicianMapper, Tec
 			.headRowNumber(2) // 重要:设置表头行数(0-based)
 			.headRowNumber(2) // 重要:设置表头行数(0-based)
 			.doRead();
 			.doRead();
 		List<Object> data = listener.getDataList();
 		List<Object> data = listener.getDataList();
-//
-		List<TechnicianEntity> dbTechnicianList = baseMapper.selectList(Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getYearAndMonth, yearAndMonth));
+ 		List<TechnicianEntity> dbTechnicianList = baseMapper.selectList(Wrappers.<TechnicianEntity>lambdaQuery().eq(TechnicianEntity::getYearAndMonth, yearAndMonth));
 		List<String> identifierList = new ArrayList<>(dbTechnicianList.stream().map(tmp -> tmp.getNumber() + ":" + tmp.getIdCard()).toList());
 		List<String> identifierList = new ArrayList<>(dbTechnicianList.stream().map(tmp -> tmp.getNumber() + ":" + tmp.getIdCard()).toList());
 
 
 		for (Object t : data) {
 		for (Object t : data) {

+ 31 - 28
kd-service/kd-scientific/src/main/java/org/sky/scientific/service/impl/XmServiceImpl.java

@@ -18,7 +18,10 @@ import org.sky.core.mp.support.Condition;
 import org.sky.core.mp.support.Query;
 import org.sky.core.mp.support.Query;
 import org.sky.core.secure.utils.SecureUtil;
 import org.sky.core.secure.utils.SecureUtil;
 import org.sky.core.tool.api.R;
 import org.sky.core.tool.api.R;
-import org.sky.core.tool.utils.*;
+import org.sky.core.tool.utils.Charsets;
+import org.sky.core.tool.utils.DateUtil;
+import org.sky.core.tool.utils.Func;
+import org.sky.core.tool.utils.StringUtil;
 import org.sky.scientific.e.XmStatusEnum;
 import org.sky.scientific.e.XmStatusEnum;
 import org.sky.scientific.mapper.DepartmentMapper;
 import org.sky.scientific.mapper.DepartmentMapper;
 import org.sky.scientific.mapper.TechnicianMapper;
 import org.sky.scientific.mapper.TechnicianMapper;
@@ -101,40 +104,42 @@ public class XmServiceImpl extends BaseServiceImpl<XmMapper, XmEntity> implement
 		return false;
 		return false;
 	}
 	}
 
 
+	private void judgeXmmcAndXmbhUnique(XmDTO xm) {
+		//检查项目名称是否重复(xm);
+		Long xmIdByXmmc = baseMapper.getXmIdByXmmcOrXmbh(null, xm.getXmmc(), null);
+		if (xmIdByXmmc != null && !xmIdByXmmc.equals(xm.getId())) {
+			throw new ServiceException("研发项目名称已存在");
+		}
+
+		Long xmIdByXmbh = baseMapper.getXmIdByXmmcOrXmbh(null, null, xm.getXmbh());
+		if (xmIdByXmbh != null && !xmIdByXmbh.equals(xm.getId())) {
+			throw new ServiceException("研发项目编号已存在");
+		}
+	}
+
 	@Override
 	@Override
 	public Long approval(XmDTO xm) {
 	public Long approval(XmDTO xm) {
-		if (Func.equals(xm.getStatus(), XmStatusEnum.暂存.getCode())) {
-			//检查项目名称是否重复(xm);
-			Long xmIdByXmmc = baseMapper.getXmIdByXmmcOrXmbh(null, xm.getXmmc(), null);
-			if (xmIdByXmmc != null && !xmIdByXmmc.equals(xm.getId())) {
-				throw new ServiceException("研发项目名称已存在");
-			}
-		} else {
+		//判断项目名称是否有效
+		this.judgeXmmcAvailable(xm.getXmmc());
+		//判断项目名称和编号是否已存在
+		judgeXmmcAndXmbhUnique(xm);
+		if (!Func.equals(xm.getStatus(), XmStatusEnum.暂存.getCode())) {
 			List<String> validate = ValidationUtils.validate(xm);
 			List<String> validate = ValidationUtils.validate(xm);
 			if (Func.isNotEmpty(validate)) {
 			if (Func.isNotEmpty(validate)) {
 				throw new ServiceException(String.join(",", validate));
 				throw new ServiceException(String.join(",", validate));
 			}
 			}
-			this.judgeXmmcAvailable(xm.getXmmc());
-
 			judgeXmIsOver(xm.getId(), true);
 			judgeXmIsOver(xm.getId(), true);
-
-			//检查项目名称是否重复(xm);
-			Long xmIdByXmmc = baseMapper.getXmIdByXmmcOrXmbh(null, xm.getXmmc(), null);
-			if (xmIdByXmmc != null && !xmIdByXmmc.equals(xm.getId())) {
-				throw new ServiceException("研发项目名称已存在");
-			}
-
-			Long xmIdByXmbh = baseMapper.getXmIdByXmmcOrXmbh(null, null, xm.getXmbh());
-			if (xmIdByXmbh != null && !xmIdByXmbh.equals(xm.getId())) {
-				throw new ServiceException("研发项目编号已存在");
-			}
-
 			if (xm.getXmyszemx() != null) {
 			if (xm.getXmyszemx() != null) {
 				List<JSONObject> list = JSONObject.parseArray(xm.getXmyszemx(), JSONObject.class);
 				List<JSONObject> list = JSONObject.parseArray(xm.getXmyszemx(), JSONObject.class);
 				BigDecimal total = list.stream().map(item -> item.getBigDecimal("amount")).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.UP);
 				BigDecimal total = list.stream().map(item -> item.getBigDecimal("amount")).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.UP);
+				if (total.compareTo(BigDecimal.ZERO) <= 0) {
+					throw new ServiceException("请填写项目预算");
+				}
 				if (total.compareTo(xm.getXmysze()) != 0) {
 				if (total.compareTo(xm.getXmysze()) != 0) {
 					throw new ServiceException("项目预算总额明细不对");
 					throw new ServiceException("项目预算总额明细不对");
 				}
 				}
+			} else {
+				throw new ServiceException("请填写项目预算");
 			}
 			}
 		}
 		}
 		return this.saveOrUpdate(xm) ? xm.getId() : null;
 		return this.saveOrUpdate(xm) ? xm.getId() : null;
@@ -147,15 +152,13 @@ public class XmServiceImpl extends BaseServiceImpl<XmMapper, XmEntity> implement
 			throw new ServiceException("项目不存在");
 			throw new ServiceException("项目不存在");
 		}
 		}
 		xm.setStatus(baseMapper.getXmStatusByXmId(xmId).getInteger("status"));
 		xm.setStatus(baseMapper.getXmStatusByXmId(xmId).getInteger("status"));
-		if(xm.getXmfzr()!=null){
+		if (xm.getXmfzr() != null) {
 			xm.setXmfzrxm(Func.toStr(technicianMapper.getNameById(xm.getXmfzr()), ""));
 			xm.setXmfzrxm(Func.toStr(technicianMapper.getNameById(xm.getXmfzr()), ""));
 		}
 		}
-		if(xm.getXmsqdwid()!=null){
+		if (xm.getXmsqdwid() != null) {
 			xm.setXmsqdw(Func.toStr(departmentMapper.getFullNameById(xm.getXmsqdwid()), ""));
 			xm.setXmsqdw(Func.toStr(departmentMapper.getFullNameById(xm.getXmsqdwid()), ""));
 		}
 		}
-		XmVO vo = cn.hutool.core.bean.BeanUtil.copyProperties(xm, XmVO.class);
-//		return BeanUtil.copyProperties(xm, XmVO.class);
-		return vo;
+  		return cn.hutool.core.bean.BeanUtil.copyProperties(xm, XmVO.class);
 	}
 	}
 
 
 	@SneakyThrows
 	@SneakyThrows
@@ -244,7 +247,7 @@ public class XmServiceImpl extends BaseServiceImpl<XmMapper, XmEntity> implement
 			//元->万元
 			//元->万元
 			xmVO.setNdygjyffy(BigDecimal.valueOf(ndygjyffy).multiply(BigDecimal.valueOf(0.0001)).setScale(2, RoundingMode.HALF_UP));
 			xmVO.setNdygjyffy(BigDecimal.valueOf(ndygjyffy).multiply(BigDecimal.valueOf(0.0001)).setScale(2, RoundingMode.HALF_UP));
 			//年度已归集金额/年度预算(%)xmyszeCurrentYear
 			//年度已归集金额/年度预算(%)xmyszeCurrentYear
-			if (xmVO.getNdygjyffy() == null || xmVO.getNdygjyffy().compareTo(BigDecimal.ZERO) <= 0 || xmVO.getXmyszeCurrentYear() == null) {
+			if (xmVO.getNdygjyffy() == null || xmVO.getNdygjyffy().compareTo(BigDecimal.ZERO) <= 0 || xmVO.getXmyszeCurrentYear() == null || xmVO.getXmyszeCurrentYear().compareTo(BigDecimal.ZERO) <= 0) {
 				xmVO.setNdygjjel(BigDecimal.ZERO);
 				xmVO.setNdygjjel(BigDecimal.ZERO);
 			} else {
 			} else {
 				xmVO.setNdygjjel(xmVO.getNdygjyffy().divide(xmVO.getXmyszeCurrentYear(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
 				xmVO.setNdygjjel(xmVO.getNdygjyffy().divide(xmVO.getXmyszeCurrentYear(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));

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

@@ -60,7 +60,7 @@ public class YsQtfyServiceImpl extends BaseServiceImpl<YsQtfyMapper, YsQtfyEntit
 
 
 	@Override
 	@Override
 	public boolean saveQtfy(YsQtfyEntity ysQtfy) {
 	public boolean saveQtfy(YsQtfyEntity ysQtfy) {
-		if (baseMapper.selectCount(Wrappers.<YsQtfyEntity>lambdaQuery().eq(YsQtfyEntity::getFynr, ysQtfy.getFynr())) > 0) {
+		if (baseMapper.selectCount(Wrappers.<YsQtfyEntity>lambdaQuery().eq(YsQtfyEntity::getFynr, ysQtfy.getFynr()).eq(YsQtfyEntity::getXmId, ysQtfy.getXmId())) > 0) {
 			throw new ServiceException("费用内容已存在 ");
 			throw new ServiceException("费用内容已存在 ");
 		}
 		}
 		ysQtfy.setYsje(ysQtfy.getYsje() * 10000);
 		ysQtfy.setYsje(ysQtfy.getYsje() * 10000);

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

@@ -61,7 +61,7 @@ public class YsSjfyServiceImpl extends BaseServiceImpl<YsSjfyMapper, YsSjfyEntit
 
 
 	@Override
 	@Override
 	public boolean saveSjfy(YsSjfyEntity ysSjfy) {
 	public boolean saveSjfy(YsSjfyEntity ysSjfy) {
-		if (baseMapper.selectCount(Wrappers.<YsSjfyEntity>lambdaQuery().eq(YsSjfyEntity::getSjnr, ysSjfy.getSjnr())) > 0) {
+		if (baseMapper.selectCount(Wrappers.<YsSjfyEntity>lambdaQuery().eq(YsSjfyEntity::getSjnr, ysSjfy.getSjnr()).eq(YsSjfyEntity::getXmId, ysSjfy.getXmId())) > 0) {
 			throw new ServiceException("设计内容或详情已存在");
 			throw new ServiceException("设计内容或详情已存在");
 		}
 		}
 		ysSjfy.setYsje(ysSjfy.getYsje() * 10000);
 		ysSjfy.setYsje(ysSjfy.getYsje() * 10000);

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

@@ -59,7 +59,7 @@ public class YsZbtsysyfyServiceImpl extends BaseServiceImpl<YsZbtsysyfyMapper, Y
 
 
 	@Override
 	@Override
 	public boolean saveZbtssyfy(YsZbtsysyfyEntity ysZbtsysyfy) {
 	public boolean saveZbtssyfy(YsZbtsysyfyEntity ysZbtsysyfy) {
-		if(baseMapper.selectCount(Wrappers.<YsZbtsysyfyEntity>lambdaQuery().eq(YsZbtsysyfyEntity::getFyje, ysZbtsysyfy.getYsje())) > 0){
+		if(baseMapper.selectCount(Wrappers.<YsZbtsysyfyEntity>lambdaQuery().eq(YsZbtsysyfyEntity::getFyje, ysZbtsysyfy.getYsje()).eq(YsZbtsysyfyEntity::getXmId, ysZbtsysyfy.getXmId())) > 0){
 			throw new ServiceException("费用内容已存在");
 			throw new ServiceException("费用内容已存在");
 		}
 		}
 		ysZbtsysyfy.setYsje(ysZbtsysyfy.getYsje() * 10000);
 		ysZbtsysyfy.setYsje(ysZbtsysyfy.getYsje() * 10000);