diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCaseCheckService.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCaseCheckService.java new file mode 100644 index 00000000..0adc1739 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/ProposalCaseCheckService.java @@ -0,0 +1,17 @@ +package com.budwk.app.zhgh.democratic.proposal.service; + +import org.nutz.lang.util.NutMap; + +import java.util.List; + +public interface ProposalCaseCheckService { + + /** + * 查询当前提案已经配置的承办单位。 + * 二次答复只能从当前提案已有的主办/协办单位里选择,避免页面误选到无关单位。 + * + * @param proposalId 提案ID + * @return 承办单位列表 + */ + List listReplyUnits(String proposalId); +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCaseCheckServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCaseCheckServiceImpl.java new file mode 100644 index 00000000..3050c01d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalCaseCheckServiceImpl.java @@ -0,0 +1,41 @@ +package com.budwk.app.zhgh.democratic.proposal.service.impl; + +import com.budwk.app.base.exception.BaseException; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalReplyUnit; +import com.budwk.app.zhgh.democratic.proposal.service.ProposalCaseCheckService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; + +import java.util.List; + +@IocBean(args = {"refer:dao"}) +public class ProposalCaseCheckServiceImpl implements ProposalCaseCheckService { + + private final Dao dao; + + public ProposalCaseCheckServiceImpl(Dao dao) { + this.dao = dao; + } + + @Override + public List listReplyUnits(String proposalId) { + if (proposalId == null || proposalId.isBlank()) { + throw new BaseException("提案ID不能为空"); + } + /* + * 二次答复的承办单位来源于当前提案已落库的主办/协办配置。 + * 这里按主办优先、再按单位名称排序,便于页面选择时直观看到主协办顺序。 + */ + List replyUnits = dao.query(ProposalReplyUnit.class, + Cnd.where(ProposalReplyUnit::getProposalId, "=", proposalId) + .desc(ProposalReplyUnit::getIsMaster) + .asc(ProposalReplyUnit::getUnitName)); + return replyUnits.stream().map(replyUnit -> NutMap.NEW() + .setv("unitId", replyUnit.getUnitId()) + .setv("unitName", replyUnit.getUnitName()) + .setv("isMaster", replyUnit.getIsMaster()) + ).toList(); + } +}