Commit 9e845f8e authored by fangxinjiang's avatar fangxinjiang

批量办理 100%

parent 013a7a7b
......@@ -476,4 +476,8 @@ public interface ErrorCodes {
* 派减异常: 无对应项目编码的公积金信息
*/
String EMP_DISPATCH_REDUCE_FUND_DEPARTNO_ERROR = "emp.dispatch.reduce.fund.depart.no.error";
/**
* 派增异常: 单派工伤其他起缴日期不可填写
*/
String EMP_DISPATCH_SOCIAL_DIY_INJURY_ERROR = "emp.dispatch.social.diy.injury.error";
}
......@@ -181,6 +181,8 @@ emp.dispatch.reduce.social.depart.no.error=\u6D3E\u51CF\u5F02\u5E38\uFF1A \u65E0
emp.dispatch.reduce.fund.depart.no.error=\u6D3E\u51CF\u5F02\u5E38\uFF1A \u65E0\u5BF9\u5E94\u9879\u76EE\u7F16\u7801\u7684\u516C\u79EF\u91D1\u4FE1\u606F
emp.dispatch.social.diy.injury.error=\u6D3E\u589E\u5F02\u5E38\uFF1A \u5355\u6D3E\u5DE5\u4F24\u5176\u4ED6\u8D77\u7F34\u65E5\u671F\u4E0D\u53EF\u586B\u5199
......
......@@ -73,6 +73,13 @@ public class TAuditInfo implements Serializable {
@Schema(description = "审核意见" )
@ExcelProperty("审核意见" )
private String auditRemark;
/**
* 备注-说明
*/
@ExcelAttribute(name = "备注-说明", maxLength = 200)
@Schema(description = "备注-说明" )
@ExcelProperty("备注-说明" )
private String remark;
/**
* 审核人
*/
......
......@@ -49,4 +49,6 @@ public class SocialHandleSearchVo extends TDispatchInfo {
* 查询数据止
**/
private int limitEnd;
private String idStr;
}
......@@ -306,9 +306,8 @@ public class TDispatchInfoController {
@SysLog("导出社保花名册信息")
//@PreAuthorize("@pms.hasPermission('wxhr:tdispatchinfo_doexportSocialRecordRoster')")
public void doexportSocialRecordRoster(HttpServletResponse response, HttpServletRequest request,
@RequestParam(name = "idStr", required = false) String idStr,
@RequestBody String[] exportFields, SocialHandleSearchVo searchVo) {
tDispatchInfoService.doexportSocialRecordRoster(response,searchVo,idStr,exportFields);
@RequestBody SocialHandleSearchVo searchVo) {
tDispatchInfoService.doexportSocialRecordRoster(response,searchVo,searchVo.getIdStr(),null);
}
/**
......@@ -323,13 +322,12 @@ public class TDispatchInfoController {
@SysLog("导出公积金变更清册")
@PreAuthorize("@pms.hasPermission('wxhr:tdispatchinfo_doexportFundRecordChange')")
public void doexportFundRecordChange(HttpServletResponse response, HttpServletRequest request,
@RequestParam(name = "idStr", required = false) String idStr,
@RequestBody String[] exportFields, SocialHandleSearchVo searchVo) {
@RequestBody SocialHandleSearchVo searchVo) {
// 获取项目权限 TODO
List<String> settleDomains = null;
// 获取自定义sql TODO
String sql = CommonConstants.EMPTY_STRING;
tDispatchInfoService.doexportFundRecordChange(response, idStr,searchVo,settleDomains,sql);
tDispatchInfoService.doexportFundRecordChange(response, searchVo.getIdStr(),searchVo,settleDomains,sql);
}
/**
* @Author fxj
......
......@@ -58,7 +58,7 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
R<List<ErrorMessage>> importReduceDiy(InputStream inputStream);
@GlobalTransactional
void batchReduceDispatch(List<TDispatchReduceVo> excelVOList, List<ErrorMessage> errorMessageList);
void batchReduceDispatch(List<TDispatchReduceVo> excelVOList, List<ErrorMessage> errorMessageList, YifuUser user);
R<Boolean> removeByIdDiy(String id);
......
......@@ -735,6 +735,9 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
socialFund.setUnitIdFund(setInfoVo.getCustomerId());
socialFund.setUnitNameFund(setInfoVo.getCustomerName());
socialFund.setSocialStatus(CommonConstants.ZERO_STRING);
socialFund.setSocialAddStatus(CommonConstants.ZERO_STRING);
socialFund.setSocialReduceStatus(CommonConstants.ONE_STRING_NEGATE);
socialFund.setSocialReduceDate(null);
socialFund.setSocialStartDate(excel.getPensionStart());
if (Common.isNotNull(socialSet)){
socialFund.setSocialHousehold(socialSet.getDepartId());
......@@ -755,7 +758,10 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
socialFund.setUnitNameFund(setInfoVo.getCustomerName());
socialFund.setUnitIdFund(setInfoVo.getCustomerId());
socialFund.setFundStatus(CommonConstants.ZERO_STRING);
socialFund.setFundAddStatus(CommonConstants.ZERO_STRING);
socialFund.setProvidentStart(excel.getProvidentStart());
socialFund.setFundReduceStatus(CommonConstants.ONE_STRING_NEGATE);
socialFund.setFundReduceDate(null);
if (Common.isNotNull(fundSet)){
socialFund.setProvidentHousehold(fundSet.getDepartId());
socialFund.setProvidentHouseholdName(fundSet.getDepartName());
......@@ -884,6 +890,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
if (Common.isNotNull(empVo)){
dispatch.setEmpId(empVo.getId());
dispatch.setEmpNo(empVo.getEmpNo());
dispatch.setEmpName(empVo.getEmpName());
// 封装合同信息 如果有合同取值实际合同信息
if (Common.isNotNull(empVo.getContractStart())){
dispatch.setContractStart(empVo.getContractStart());
......@@ -1029,6 +1036,11 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
fund.setFundPayPoint(Common.isNotNullToStr(fundSet.getFundPayPoint()));
fund.setHaveThisMonth(fundSet.getHaveThisMonth());
//单边小数点处理逻辑
if (Common.isNotNull(fund.getFundPayPoint())){
fund.setUnitProvidentFee(Common.formatMoneyForFund(BigDecimalUtils.safeMultiply(fund.getUnitProvidengCardinal(), fund.getUnitProvidentPer(),BigDecimal.valueOf(CommonConstants.ONE_OF_PERCENT.doubleValue())),Integer.valueOf(fund.getFundPayPoint())));
fund.setPersonalProvidentFee(Common.formatMoneyForFund(BigDecimalUtils.safeMultiply(fund.getPersonalProvidentCardinal(), fund.getPersonalProvidentPer(),BigDecimal.valueOf(CommonConstants.ONE_OF_PERCENT.doubleValue())),Integer.valueOf(fund.getFundPayPoint())));
}
}
funds.put(excel.getEmpIdcard(),fund);
}
......@@ -1102,11 +1114,6 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
social.setEmpNo(empVo.getEmpNo());
}
social.setEmpIdcard(excel.getEmpIdcard());
if (CommonConstants.ZERO_STRING.equals(social.getIsIllness())){
social.setBigailmentHandle(null);
social.setBigailmentStart(null);
social.setCollectMoth(null);
}
social.setBirthHandle(CommonConstants.ZERO_STRING);
social.setMedicalHandle(CommonConstants.ZERO_STRING);
social.setPensionHandle(CommonConstants.ZERO_STRING);
......@@ -1134,6 +1141,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
// 获取到政策后封装相关数据
if (Common.isNotNull(socialSet)){
social.setIsIllness(socialSet.getIsIllness());
if (Common.isNotNull(socialSet.getProvince())){
social.setSocialProvince(Integer.toString(socialSet.getProvince()));
}
......@@ -1150,9 +1158,6 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
social.setCollectMoth(socialSet.getCollectMoth());
social.setCollectType(socialSet.getCollectType());
social.setHaveThisMonth(socialSet.getHaveThisMonth());
if (CommonConstants.ZERO_STRING.equals(social.getIsIllness())){
social.setInsuranceBigailment(socialSet.getInsuranceBigailment());
}
social.setInsuranceBirth(socialSet.getInsuranceBirth());
social.setInsuranceInjury(socialSet.getInsuranceInjury());
social.setInsuranceMedical(socialSet.getInsuranceMedical());
......@@ -1160,7 +1165,6 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
social.setInsuranceUnemployment(socialSet.getInsuranceUnemployment());
social.setInsuranceIsLatestCardinality(socialSet.getInsuranceIsLatestCardinality());
social.setIsChargePersonal(socialSet.getIsChargePersonal());
social.setIsIllness(socialSet.getIsIllness());
social.setOverpayNumber(socialSet.getOverpayNumber());
social.setValueType(socialSet.getValueType());
social.setPayPolicy(socialSet.getPayPolicy());
......@@ -1177,10 +1181,23 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
social.setUnitWorkUnjuryPer(socialSet.getUnitInjuryPro());
social.setUnitBirthPer(socialSet.getUnitBirthPro());
if (CommonConstants.ZERO_STRING.equals(social.getIsIllness())){
social.setInsuranceBigailment(socialSet.getInsuranceBigailment());
social.setPersonalBigailmentCardinal(ServiceUtil.ifNull(excel.getBigailmentCardinal(), excel.getPensionCardinal()));
social.setUnitBigailmentCardinal(ServiceUtil.ifNull(excel.getBigailmentCardinal(), excel.getPensionCardinal()));
social.setUnitBigailmentPer(socialSet.getPayCompanyPro());
social.setPersonalBigailmentPer(socialSet.getPayPersonalPro());
social.setBigailmentHandle(CommonConstants.ZERO_STRING);
social.setBigailmentStart(excel.getBigailmentStart());
social.setCollectMoth(socialSet.getCollectMoth());
}else {
social.setInsuranceBigailment(null);
social.setPersonalBigailmentCardinal(null);
social.setUnitBigailmentCardinal(null);
social.setUnitBigailmentPer(null);
social.setPersonalBigailmentPer(null);
social.setBigailmentHandle(null);
social.setBigailmentStart(null);
social.setCollectMoth(null);
}
//按最低
if (CommonConstants.ZERO_STRING.equals(excel.getPaymentType())){
......@@ -1265,10 +1282,66 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
, social.getPersonalUnemploymentMoney()));
// 处理部分办理失败的情况
initHandleStatus(excel, socialFundMap, social);
//单独处理工伤派增时对应的各种数据
handleInjury(social);
socials.put(excel.getEmpIdcard(),social);
}
}
private void handleInjury(TSocialInfo social) {
if (Common.isEmpty(social.getPensionStart())){
social.setPensionHandle(null);
social.setPersonalPensionCardinal(null);
social.setPersonalPensionPer(null);
social.setPersonalPersionMoney(null);
social.setUnitPersionMoney(null);
social.setUnitPensionPer(null);
social.setUnitPensionCardinal(null);
social.setInsurancePension(null);
}
if (Common.isEmpty(social.getMedicalStart())){
social.setMedicalHandle(null);
social.setPersonalMedicalCardinal(null);
social.setPersonalMedicalPer(null);
social.setPersonalMedicalMoney(null);
social.setUnitMedicalMoney(null);
social.setUnitMedicalPer(null);
social.setUnitMedicalCardinal(null);
social.setInsuranceMedical(null);
}
if (Common.isEmpty(social.getBirthStart())){
social.setBirthHandle(null);
social.setUnitBirthMoney(null);
social.setUnitBirthPer(null);
social.setUnitBirthCardinal(null);
social.setInsuranceBirth(null);
}
if (Common.isEmpty(social.getUnemployStart())){
social.setUnemployHandle(null);
social.setUnitUnemploymentCardinal(null);
social.setUnitUnemploymentPer(null);
social.setUnitUnemploymentCardinal(null);
social.setInsuranceUnemployment(null);
}
if (Common.isEmpty(social.getWorkInjuryStart())){
social.setWorkInjuryHandle(null);
social.setUnitInjuryMoney(null);
social.setUnitWorkUnjuryPer(null);
social.setUnitWorkInjuryCardinal(null);
social.setInsuranceInjury(null);
}
if (Common.isEmpty(social.getBigailmentStart())){
social.setBigailmentHandle(null);
social.setPersonalBigailmentCardinal(null);
social.setPersonalBigailmentPer(null);
social.setPersonalBigailmentMoney(null);
social.setUnitBigailmentMoney(null);
social.setUnitBigailmentPer(null);
social.setUnitBigailmentCardinal(null);
social.setInsuranceBigailment(null);
}
}
private void initHandleStatus(TDispatchImportVo excel, Map<String, TSocialFundInfo> socialFundMap, TSocialInfo social) {
TSocialFundInfo socialFund;
if (Common.isNotNull(socialFundMap)) {
......@@ -1691,6 +1764,18 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), MsgUtils.getMessage(ErrorCodes.EMP_DISPATCH_SOCIAL_DIY_NOT_EMPTY)));
return true;
}
// 兼职工伤 养老空 非工伤起缴日期不可有数据
if (CommonConstants.ONE_STRING.equals(excel.getPaymentType())
&& Common.isEmpty(excel.getPensionStart())
&& Common.isNotNull(excel.getWorkInjuryStart())
&& (Common.isNotNull(excel.getMedicalStart())
|| Common.isNotNull(excel.getBirthStart())
|| Common.isNotNull(excel.getUnemployStart())
|| Common.isNotNull(excel.getBigailmentStart()))
){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), MsgUtils.getMessage(ErrorCodes.EMP_DISPATCH_SOCIAL_DIY_INJURY_ERROR)));
return true;
}
if (Common.isNotNull(excel.getProvidentHousehold()) && (
Common.isEmpty(excel.getProvidentCardinal())
|| Common.isEmpty(excel.getProvidentStart())
......@@ -1701,7 +1786,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
TSocialFundInfo socialFund;
if (Common.isNotNull(socialFundMap) && Common.isNotNull(excel.getSocialHousehold())){
if (Common.isNotNull(socialFundMap)){
socialFund = socialFundMap.get(excel.getEmpIdcard());
if (Common.isNotNull(socialFund)){
// 社保状态:派增(0待审核、1待办理、2办理中 3办理成功、4部分办理失败 5 办理失败)、派减(6待审核 7待办理 8办理成功 9 办理失败 10 审核不通过-增)
......@@ -1744,7 +1829,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
// 校验公积金上下限和起缴日期
if (Common.isNotNull(excel.getProvidentHousehold())){
if(Common.isNotNull(fundSet) && Common.isEmpty(excel.getTrustRemark())
if(Common.isNotNull(fundSet)
&& Common.isNotNull(excel.getProvidentCardinal())
&& (excel.getProvidentCardinal().compareTo(fundSet.getUpperLimit()) > CommonConstants.ZERO_INT
|| excel.getProvidentCardinal().compareTo(fundSet.getLowerLimit())< CommonConstants.ZERO_INT)){
......@@ -1830,14 +1915,11 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}else {
temp = excel.getContractStart();
}
if (CommonConstants.ONE_STRING.equals(excel.getPaymentType()) && Common.isEmpty(excel.getTrustRemark())
&& (!temp.equals(excel.getPensionStart())
|| !temp.equals(excel.getMedicalStart())
|| !temp.equals(excel.getUnemployStart())
|| !temp.equals(excel.getWorkInjuryStart())
|| !temp.equals(excel.getBirthStart())
|| !temp.equals(excel.getBigailmentStart())
)){
if (CommonConstants.ONE_STRING.equals(excel.getPaymentType())
&& Common.isEmpty(excel.getTrustRemark())
&& Common.isEmpty(excel.getPensionStart())
&& !temp.equals(excel.getWorkInjuryStart())
){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), MsgUtils.getMessage(ErrorCodes.EMP_DISPATCH_SOCIAL_DATE_LIMIT_ERROR)));
return true;
}
......@@ -1985,7 +2067,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
batchReduceDispatch(cachedDataList, errorMessageList);
batchReduceDispatch(cachedDataList, errorMessageList,user);
log.info("存储数据库成功!");
}
}).sheet().doRead();
......@@ -1998,7 +2080,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
@GlobalTransactional
@Override
public void batchReduceDispatch(List<TDispatchReduceVo> excelVOList, List<ErrorMessage> errorMessageList) {
public void batchReduceDispatch(List<TDispatchReduceVo> excelVOList, List<ErrorMessage> errorMessageList, YifuUser user) {
if (!Common.isNotNull(excelVOList)){
return;
}
......@@ -2041,7 +2123,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
excelVOTemp.put(excel.getEmpIdcard(),excel.getEmpIdcard());
// 初始化派单 和 社保公积金查询信息
dispatch = gettDispatchInfo(empVo, excel, socialFund,setInfoVo);
dispatch = gettDispatchInfo(empVo, excel, socialFund,setInfoVo,user);
try {
dispatch.setApplyNo(getApplyCode());
dispatch.setStatus(CommonConstants.ONE_STRING);
......@@ -2056,9 +2138,15 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
private TDispatchInfo gettDispatchInfo(DispatchEmpVo empVo, TDispatchReduceVo excel, TSocialFundInfo socialFund, ProjectSetInfoVo setInfoVo) {
private TDispatchInfo gettDispatchInfo(DispatchEmpVo empVo, TDispatchReduceVo excel, TSocialFundInfo socialFund, ProjectSetInfoVo setInfoVo, YifuUser user) {
TDispatchInfo dispatch;
dispatch = new TDispatchInfo();
if (Common.isNotNull(user)){
dispatch.setCreateBy(user.getId());
dispatch.setCreateName(user.getNickname());
dispatch.setOrganName(user.getDeptName());
}
dispatch.setCreateTime(LocalDateTime.now());
dispatch.setEmpId(socialFund.getEmpId());
dispatch.setEmpName(socialFund.getEmpName());
dispatch.setEmpNo(socialFund.getEmpNo());
......@@ -2257,7 +2345,6 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
detailVo.setAudits(auditInfoMapper.selectList(Wrappers.<TAuditInfo>query().lambda()
.eq(TAuditInfo::getEmpIdcard,dispatch.getEmpIdcard())
.and(obj->obj.eq(TAuditInfo::getDispatchInfoId,dispatch.getId())
.or().eq(TAuditInfo::getSocialId,dispatch.getId())
.or().eq(TAuditInfo::getProvidentId,dispatch.getId()))));
......@@ -2466,6 +2553,8 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
}
//新增审核记录信息
auditInfo.setEmpIdcard(dis.getEmpIdcard());
auditInfo.setDispatchInfoId(dis.getId());
auditInfoMapper.insert(auditInfo);
dis.setAuditUser(user.getId());
dis.setAuditTime(now);
......@@ -3244,6 +3333,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
private List<FundHandleExportVo> getFundRecordList(SocialHandleSearchVo searchVo, String idStr, List<String> settleDomains, String sql) {
List<String> ids = Common.getList(idStr);
return baseMapper.getFundRecordList(searchVo,Common.getList(idStr),settleDomains,sql);
}
......
......@@ -32,7 +32,6 @@ import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.ArchivesDaprUtil;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.insurances.util.ValidityUtil;
import com.yifu.cloud.plus.v1.yifu.social.constants.PreDispatchConstants;
import com.yifu.cloud.plus.v1.yifu.social.entity.*;
import com.yifu.cloud.plus.v1.yifu.social.mapper.*;
......@@ -399,7 +398,7 @@ public class TPreDispatchInfoServiceImpl extends ServiceImpl<TPreDispatchInfoMap
}
List<TDispatchReduceVo> dispatchImportList = new ArrayList<>();
dispatchImportList.add(dispatchReduceVo);
dispatchInfoService.batchReduceDispatch(dispatchImportList, errorMessageList);
dispatchInfoService.batchReduceDispatch(dispatchImportList, errorMessageList, user);
// 处理派减结果
errorMessage = handleDispatchAddRes(preInfo,errorMessageList);
if (null != errorMessage){
......@@ -495,7 +494,7 @@ public class TPreDispatchInfoServiceImpl extends ServiceImpl<TPreDispatchInfoMap
dispatchReduce(dispatchReduceVo, pre);
List<TDispatchReduceVo> dispatchImportList = new ArrayList<>();
dispatchImportList.add(dispatchReduceVo);
dispatchInfoService.batchReduceDispatch(dispatchImportList, errorMessageList);
dispatchInfoService.batchReduceDispatch(dispatchImportList, errorMessageList, user);
//处理派减结果
handleDispatchAddRes(pre, errorMessageList);
......
......@@ -37,6 +37,7 @@
<result property="color" column="COLOR"/>
<result property="dispatchInfoId" column="DISPATCH_INFO_ID"/>
<result property="type" column="TYPE"/>
<result property="remark" column="REMARK"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -51,7 +52,7 @@
a.TITLE,
a.COLOR,
a.DISPATCH_INFO_ID,
a.TYPE
a.TYPE,a.REMARK
</sql>
<sql id="tAuditInfo_where">
<if test="tAuditInfo != null">
......
......@@ -691,6 +691,9 @@
</if>-->
<if test="tDispatchInfo != null">
<if test="tDispatchInfo.type != null and tDispatchInfo.type.trim() != ''">
AND a.TYPE = #{tDispatchInfo.type}
</if>
<if test="tDispatchInfo.socialProvince != null and tDispatchInfo.socialProvince!= null">
AND b.social_province = #{tDispatchInfo.socialProvince}
<if test="tDispatchInfo.socialCity != null and tDispatchInfo.socialCity!= null">
......@@ -792,6 +795,9 @@
<if test="tDispatchInfo.fundProvince != null and tDispatchInfo.fundProvince.trim() != ''">
AND a.FUND_PROVINCE = #{tDispatchInfo.fundProvince}
</if>
<if test="tDispatchInfo.type != null and tDispatchInfo.type.trim() != ''">
AND a.TYPE = #{tDispatchInfo.type}
</if>
<if test="tDispatchInfo.fundCity != null and tDispatchInfo.fundCity.trim() != ''">
AND a.FUND_CITY = #{tDispatchInfo.fundCity}
</if>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment