Explorar el Código

Merge branch 'feat-20240402-xinshiyi'

lixuesong hace 1 año
padre
commit
2e8522deea

+ 12 - 0
db/v2.0/20240402.sql

@@ -0,0 +1,12 @@
+create table xinshiyi_input_record
+(
+    id           int auto_increment comment '主键id'
+        primary key,
+    req_id       varchar(64)                        null comment '请求序号',
+    batch_id     varchar(64)                        null comment '批次号',
+    msg_method   char(20)                           null comment '消息接口名称',
+    order_status int                                null comment '订单状态',
+    req_body     text                               null comment '请求body',
+    create_time  datetime default CURRENT_TIMESTAMP null comment '创建时间'
+)
+    comment '薪事易回调异步通知记录';

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -167,6 +167,11 @@ public interface CacheConstants {
 	 */
 	String ZHONG_ZHI_SETTLE_NOTIFY_KEY = "ZHONG:ZHI:SETTLE:NOTIFY:KEY:";
 
+	/**
+	 * 薪事易结算回调key
+	 */
+	String XIN_SHI_YI_SETTLE_NOTIFY_KEY = "XIN:SHI:YI:SETTLE_NOTIFY_KEY:";
+
 	/**
 	 * 发起阿拉丁认证渠道记录key
 	 */

+ 41 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -1,9 +1,11 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -16,6 +18,7 @@ import com.qunzhixinxi.hnqz.admin.entity.OladingInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.QifuInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.XinbadaInputRecord;
+import com.qunzhixinxi.hnqz.admin.entity.XinshiyiInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.ZhongyiyunInputRecord;
 import com.qunzhixinxi.hnqz.admin.entity.ZhongzhiInputRecord;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
@@ -33,6 +36,7 @@ import com.qunzhixinxi.hnqz.admin.util.SaasApiDemoV2;
 import com.qunzhixinxi.hnqz.admin.util.ZhongyiyunUtils;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
+import com.qunzhixinxi.hnqz.admin.mapper.XinshiyiInputRecordMapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -80,6 +84,8 @@ public class GigThirdApiController {
 
 	private final QifuInputRecordMapper qifuInputRecordMapper;
 
+	private final XinshiyiInputRecordMapper xinshiyiInputRecordMapper;
+
 	private final SysDeptSubService sysDeptSubService;
 
 	private final RedisTemplate redisTemplate;
@@ -95,9 +101,42 @@ public class GigThirdApiController {
 	@SysLog("薪事易结算异步通知回调")
 	@PostMapping("/xinshiyi/pay-notify")
 	public String xinShiYiSettleNotifyRequest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
-		log.info("福建企赋结算请求方法参数:body={}, headers={}", body, headers);
+		log.info("薪事易结算请求方法参数:body={}, headers={}", body, headers);
+
+		// 请求body json
+		JSONObject bodyJson = JSONUtil.parseObj(body);
+
+		String msgMethod = bodyJson.getStr("msgMethod");
+		// bizContent
+		JSONObject bizContent = bodyJson.getJSONObject("bizContent");
+
+		// 批次号
+		String batchId = bizContent.getStr("batchId");
+		JSONArray orderDetailList = bizContent.getJSONArray("orderDetailList");
+
+		String redisKey = String.format("%s_%s", CacheConstants.XIN_SHI_YI_SETTLE_NOTIFY_KEY, batchId);
+		Boolean absent = redisTemplate.opsForValue().setIfAbsent(redisKey, batchId, 30, TimeUnit.MINUTES);
+		if (Boolean.FALSE.equals(absent)) {
+			log.warn("存在在途操作batchId={}", batchId);
+			return "fail";
+		}
+
+		// 请求保存到数据库
+		XinshiyiInputRecord inputRecord = new XinshiyiInputRecord();
+		inputRecord.setBatchId(batchId);
+		inputRecord.setReqBody(body);
+		if (CollUtil.isNotEmpty(orderDetailList)) {
+			JSONObject orderDetail = (JSONObject) orderDetailList.get(0);
+			inputRecord.setOrderStatus(orderDetail.getInt("orderStatus"));
+			inputRecord.setReqId(orderDetail.getStr("partnerOrderId"));
+			inputRecord.setMsgMethod(msgMethod);
+		}
+		xinshiyiInputRecordMapper.insert(inputRecord);
+
+		// 业务处理
+		gigThirdApiService.xinshiyiSettleNotify(bizContent);
 
-		return "OK";
+		return "ok";
 	}
 
 	/**

+ 54 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/XinshiyiInputRecord.java

@@ -0,0 +1,54 @@
+package com.qunzhixinxi.hnqz.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 薪事易回调异步通知记录
+ * @TableName xinshiyi_input_record
+ */
+@TableName(value ="xinshiyi_input_record")
+@Data
+public class XinshiyiInputRecord implements Serializable {
+    /**
+     * 主键id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 请求序号
+     */
+    private String reqId;
+
+    /**
+     * 批次号
+     */
+    private String batchId;
+
+	/**
+	 * 消息接口名称
+	 */
+	private String msgMethod;
+
+    /**
+     * 订单状态
+     */
+    private Integer orderStatus;
+
+    /**
+     * 请求body
+     */
+    private String reqBody;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectTypeEnum.java

@@ -22,7 +22,7 @@ public enum SubjectTypeEnum {
 	TYPE_QI_FU("9", "福建企赋"),
 	TYPE_SHEN_ZHEN_REN_CAI("10", "深圳人才"),
 	TYPE_YI_MA("11", "易马财税"),
-
+	TYPE_XIN_SHI_YI("12", "薪事易"),
 	TYPE_HE_CHUANG("13", "合创众盈"),
 
 	ENABLE_FLAG_FALSE("0", "无效"),

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/XinshiyiInputRecordMapper.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.entity.XinshiyiInputRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author li312
+* @description 针对表【xinshiyi_input_record(薪事易回调异步通知记录)】的数据库操作Mapper
+* @createDate 2024-04-02 12:28:37
+* @Entity com.qunzhixinxi.hnqz.admin.entity.XinshiyiInputRecord
+*/
+@Mapper
+public interface XinshiyiInputRecordMapper extends BaseMapper<XinshiyiInputRecord> {
+
+}
+
+
+
+

+ 2 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -197,8 +197,8 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
 				.set(SysUserSub::getUpdateUser, 0)
 				.set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
 
-		if (XinShiYiCertStatus.SIGN.equals(certStatusEnum)) {
-			// 已签约 即对应这里的已认证
+		if (XinShiYiCertStatus.CERT.equals(certStatusEnum)) {
+			// 已认证
 			updateWrapper.set(SysUserSub::getCertStatus, XinShiYiCertStatus.CERT.getCode());
 			updateWrapper.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED);
 		} else {

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/GigThirdApiService.java

@@ -14,6 +14,14 @@ import java.util.List;
  */
 public interface GigThirdApiService {
 
+	/**
+	 * 薪事易结算通知业务处理
+	 *
+	 * @param bodyJson 正文 JSON
+	 * @return boolean 结果
+	 */
+	boolean xinshiyiSettleNotify(JSONObject bodyJson);
+
 	/**
 	 * 福建企赋结算回调业务处理
 	 *

+ 74 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -89,6 +89,80 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 
 	private final HuiqiyunInputRecordService huiqiyunInputRecordService;
 
+	/**
+	 * 薪事易结算通知业务处理
+	 *
+	 * @param bodyJson 正文 JSON
+	 * @return boolean 结果
+	 */
+	@Override
+	public boolean xinshiyiSettleNotify(JSONObject bodyJson) {
+		JSONArray orderDetailList = bodyJson.getJSONArray("orderDetailList");
+		if (CollUtil.isEmpty(orderDetailList)) {
+			log.warn("薪事易结算通知异常: orderDetailList为空");
+			return false;
+		}
+
+		JSONObject orderDetail = (JSONObject) orderDetailList.get(0);
+		// 订单状态: 0,待发放;1,发放中(请求支付)2,发放成功;3,发放失败;4,发放异常;5撤销
+		Integer orderStatus = orderDetail.getInt("orderStatus");
+		String partnerOrderId = orderDetail.getStr("partnerOrderId");
+		if (orderStatus == null) {
+			log.warn("薪事易结算通知异常: orderStatus为空");
+			return false;
+		}
+
+		// 根据orderNo查询结算单
+		List<WmScorePackageSettleNote> settleNoteList = scorePackageSettleNoteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.eq(WmScorePackageSettleNote::getStreamId, partnerOrderId));
+		if (CollUtil.isEmpty(settleNoteList)) {
+			log.warn("订单partnerOrderId={}对应结算单不存在", partnerOrderId);
+			return false;
+		}
+
+		WmScorePackageSettleNote tmp = settleNoteList.get(0);
+
+		int yaoyiStatus = 0;
+		if (orderStatus.equals(2)) {
+			// 对应要易结算成功状态
+			yaoyiStatus = 1;
+		} else {
+			yaoyiStatus = 2;
+		}
+
+		// 修改结算状态
+		final int finalYaoyiStatus = yaoyiStatus;
+		List<WmScorePackageSettleNote> updateList = settleNoteList.stream().map(note -> {
+			WmScorePackageSettleNote updateEntity = new WmScorePackageSettleNote();
+			updateEntity.setId(note.getId());
+			updateEntity.setSettleNoteStatus(finalYaoyiStatus);
+			if (finalYaoyiStatus == 1){
+				updateEntity.setNotifyTime(LocalDateTime.now());
+			}
+			updateEntity.setUpdateTime(LocalDateTime.now());
+			return updateEntity;
+		}).collect(Collectors.toList());
+
+		scorePackageSettleNoteService.updateBatchById(updateList);
+
+		WmScorePackage scorePackage = scorePackageService.getById(tmp.getPackageId());
+
+		// 遥领不修改
+		if (!"1611890566".equals(scorePackage.getSendPackageDeptId())) {
+			// 更新积分包状态
+			log.info("更新积分包状态:{}", tmp);
+			WmScorePackage wmScorePackage = new WmScorePackage();
+			wmScorePackage.setId(tmp.getPackageId());
+			wmScorePackage.setSettleStatus(yaoyiStatus);
+			wmScorePackage.setUpdateTime(LocalDateTime.now());
+			scorePackageService.updateById(wmScorePackage);
+		}
+
+		redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + tmp.getId());
+
+		return true;
+	}
+
 	/**
 	 * 福建企赋结算回调业务处理
 	 *

+ 57 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -707,8 +707,15 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 
 				// 是否需要传核身视频,阿拉丁、易联默认都要传
 				boolean uploadFaceID = userSignCertDTO.getUploadFaceID() != null && userSignCertDTO.getUploadFaceID();
+
 				// 封装请求参数
-				GigInfoModel infoModel = this.buildChannelCertModel(sysUser, userSub, userExtRecord, dept.getTaxCode(), requestId, uploadFaceID);
+				GigInfoModel infoModel = null;
+				if (GigTypeEnum.XIN_SHI_YI.equals(userSub.getGigType())) {
+					infoModel = this.buildChannelCertModelForXinshiyi(sysUser, userSub, userExtRecord, dept.getTaxCode(), requestId, uploadFaceID);
+				} else {
+					infoModel = this.buildChannelCertModel(sysUser, userSub, userExtRecord, dept.getTaxCode(), requestId, uploadFaceID);
+				}
+
 				// 更新为进行中状态
 				SysUserSub updateUserSub = new SysUserSub();
 				updateUserSub.setId(userSub.getId());
@@ -918,6 +925,55 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		return infoModel;
 	}
 
+	/**
+	 * 封装签约认证的请求参数
+	 *
+	 * @param sysUser
+	 * @param userSub
+	 * @param userExtRecord
+	 * @param entCode
+	 * @param requestId
+	 * @param uploadFaceID
+	 * @return
+	 */
+	private GigInfoModel buildChannelCertModelForXinshiyi(SysUser sysUser, SysUserSub userSub, SysUserExtRecord userExtRecord,
+											   String entCode, String requestId, boolean uploadFaceID) {
+		// 基础信息
+		GigBaseInfoModel baseInfoModel = new GigBaseInfoModel();
+		baseInfoModel.setRequestId(requestId);
+		baseInfoModel.setGigType(userSub.getGigType());
+		baseInfoModel.setGigChannel(userSub.getGigChannel());
+		baseInfoModel.setGigLocation(userSub.getSubjectLocation());
+		// 用户信息
+		GigUserInfoModel userInfoModel = new GigUserInfoModel();
+		userInfoModel.setUserId(sysUser.getUserId());
+		userInfoModel.setName(sysUser.getRealname());
+		userInfoModel.setUsername(sysUser.getUsername());
+		userInfoModel.setEntCode(entCode);
+		userInfoModel.setDeptId(sysUser.getDeptId());
+		userInfoModel.setIdCard(sysUser.getIdCardNumber());
+		userInfoModel.setIdCardType(MemberIDCardType.ID_CARD);
+		userInfoModel.setMemberType(MemberType.YAOYI_EXCLUSIVE_PERSONNEL);
+		userInfoModel.setEmail("gig_service@yaoyi.net");
+		userInfoModel.setAddress("北京市-房山区-长阳镇");
+		userInfoModel.setPayChannel(PayChannel.BANK_CARD);
+		userInfoModel.setBankPhone(userSub.getBankPhone());
+		userInfoModel.setBankCard(userSub.getBankCardNumber());
+		userInfoModel.setBankName(userSub.getBankName());
+		userInfoModel.setUploadFaceID(uploadFaceID);
+		userInfoModel.setIdCardFront(userExtRecord.getIdCardFrontUrl());
+		userInfoModel.setIdCardBack(userExtRecord.getIdCardBackUrl());
+		userInfoModel.setSignImageUrl(StrUtil.isBlank(userSub.getAgreementUrl())
+				? null : userSub.getAgreementUrl().startsWith("https")
+				? userSub.getAgreementUrl() : upmsConfig.getClientUrl() + userSub.getAgreementUrl());
+
+		GigInfoModel infoModel = new GigInfoModel();
+		infoModel.setBaseInfo(baseInfoModel);
+		infoModel.setUserInfo(userInfoModel);
+
+		return infoModel;
+	}
+
 	/**
 	 * 税邦云发送绑卡验证码
 	 *

+ 194 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmPayOffServiceImpl.java

@@ -830,6 +830,10 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		else if (SubjectTypeEnum.TYPE_HE_CHUANG.getCode().equals(subType)) {
 			return settleByOlading(input, wmScorePackage, taxCode, operator);
 		}
+		// 薪事易
+		else if (SubjectTypeEnum.TYPE_XIN_SHI_YI.getCode().equals(subType)) {
+			return this.settleByXinshiyi(input, wmScorePackage, taxCode, operator);
+		}
 		// 税邦云
 		else {
 			log.info("税邦云结算开始-获取会员所属企业的统一社会信用代码:{} ", taxCode);
@@ -1001,6 +1005,196 @@ public class WmPayOffServiceImpl extends ServiceImpl<WmPayOffMapper, WmPayOff> i
 		}
 	}
 
+	/**
+	 * 薪事易结算操作
+	 *
+	 * @param input          结算数据
+	 * @param wmScorePackage 积分包
+	 * @param taxCode        税号
+	 * @param operator       操作员
+	 * @return 结果
+	 */
+	private R<?> settleByXinshiyi(WmScorePackageSettleInput input,
+								  WmScorePackage wmScorePackage,
+								  String taxCode,
+								  HnqzUser operator) {
+
+		List<WmScorePackageSettleNote> notes = input.getNotes();
+		StringBuilder noticeInfo = new StringBuilder();
+
+		// WmScorePackageSettleNote
+		for (WmScorePackageSettleNote note : notes) {
+			note.setInvoiceType(input.getInvoiceCategory());
+			note.setCategoryName(StrUtil.isNotBlank(input.getCategoryName()) ? input.getCategoryName() : note.getCategoryName());
+			note.setSubToGigTime(LocalDateTime.now());
+		}
+		noteService.updateBatchById(notes);
+
+
+		for (WmScorePackageSettleNote note : notes) {
+			SysUser sysUser = sysUserMapper.selectById(note.getUserId());
+
+			SysUserSub userSub = sysUserSubMapper.selectOne(Wrappers.<SysUserSub>lambdaQuery()
+					.eq(SysUserSub::getUserId, sysUser.getUserId())
+					.eq(SysUserSub::getSubjectLocation, input.getSubjectLocation())
+			);
+
+			if (userSub == null) {
+				log.info("结算对象-" + sysUser.getRealname() + ":认证信息不存在,不能结算");
+				return R.failed("结算对象-" + sysUser.getRealname() + ":认证信息不存在,不能结算");
+			}
+
+			if (!Objects.equals(userSub.getCertStatus(), DingEnum.CER_STATUS_1.getType())) {
+				return R.failed(sysUser.getRealname() + "人员未认证或未绑卡,不能结算");
+			}
+
+			if (Boolean.TRUE.equals(redisTemplate.hasKey(CacheConstants.SETTLE_PACKAGE_KEY + note.getId()))) {
+				return R.failed("结算对象-" + sysUser.getRealname() + ":正在结算,请勿重复结算");
+			}
+
+			if (DingEnum.NOTE_STATUS_SUCCESS.getType().equals(note.getSettleNoteStatus())) {
+				log.info("结算对象-" + sysUser.getRealname() + ":已结算,请勿重复结算");
+				return R.failed("结算对象-" + sysUser.getRealname() + ":已结算,请勿重复结算");
+			}
+			if (DingEnum.NOTE_STATUS_SUBMIT.getType().equals(note.getSettleNoteStatus())) {
+				log.info("结算对象-" + sysUser.getRealname() + ":已提交,请等待耐心结算结果");
+				return R.failed("结算对象-" + sysUser.getRealname() + ":已提交,请等待耐心结算结果");
+			}
+		}
+
+		for (WmScorePackageSettleNote note : notes) {
+			// 加锁
+			redisTemplate.opsForValue().set(CacheConstants.SETTLE_PACKAGE_KEY + note.getId(),
+					note.getId(), CacheConstants.SETTLE_TIME, TimeUnit.DAYS);
+
+			SysUser sysUser = sysUserMapper.selectById(note.getUserId());
+
+			try {
+
+				// 获取请求token
+				String url = String.format(GIG_TOKEN_URL, upmsConfig.getGigServiceUrl());
+				log.info("远端请求gig-token:{}", url);
+				ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(url, String.class,
+						String.valueOf(operator.getDeptId()), "settle", String.valueOf(operator.getId()));
+				log.warn("获取结算token:{}", tokenResult.getBody());
+				if (!JSONUtil.isJson(tokenResult.getBody())) {
+					return R.failed("获取结算token失败");
+				}
+
+				JSONObject jsonObject = JSONUtil.parseObj(tokenResult.getBody());
+
+				if (jsonObject.getInt("code") != 0 || StrUtil.isBlank(jsonObject.getStr("data"))) {
+					return R.failed("获取结算token失败");
+				}
+
+				String token = jsonObject.getStr("data");
+
+				// 间隔100毫秒
+				Thread.sleep(100);
+
+				// 查询发票类目对应的字典
+				SysDictItem zhongzhiInvoice = sysDictItemMapper.selectOne(Wrappers.<SysDictItem>lambdaQuery()
+						.eq(SysDictItem::getType, "zhongzhi_invoice")
+						.eq(SysDictItem::getValue, String.valueOf(note.getInvoiceType())));
+
+				// 封装结算参数
+				Map<String, Object> params = new HashMap<>();
+				params.put("token", token);
+				params.put("tenantId", operator.getDeptId());
+				params.put("operatorId", operator.getId());
+				params.put("requestId", RandomStringUtils.randomAlphabetic(12));
+				params.put("taskName", wmScorePackage.getScorePackageName() + "_" + System.currentTimeMillis());
+				params.put("amount", String.valueOf(note.getSettleAmount().doubleValue()));
+				params.put("taskStartTime", wmScorePackage.getCreateTime().toLocalDate());
+				params.put("taskEndTime", wmScorePackage.getUpdateTime().toLocalDate());
+				params.put("taskLocation", "要易云");
+				params.put("username", sysUser.getBankPhone());
+				params.put("idCard", sysUser.getIdCardNumber());
+				params.put("idCardType","ID_CARD");
+				params.put("realName", sysUser.getRealname());
+				params.put("bankCard", sysUser.getBankCardNumber());
+				params.put("bankPhone", sysUser.getBankPhone());
+				params.put("endType", "CSO");
+				params.put("enterpriseCode", taxCode);
+				params.put("subjectType", "XIN_SHI_YI");
+				params.put("channel", "DEFAULT");
+				params.put("subjectLocation", input.getSubjectLocation().getType());
+				params.put("taxMode", "SPECIAL");
+				params.put("transactionModel", "CHANNEL");
+				params.put("taskDescription", "根据要求,执行、并完成学术推广活动,并以在线平台工具采集、记录活动内容");
+
+				// 发起结算
+				String url1 = String.format(GIG_SETTLE_URL, upmsConfig.getGigServiceUrl());
+				log.info("远端请求gig-settle:{}", url);
+				HttpHeaders headers = new HttpHeaders();
+				headers.setContentType(MediaType.APPLICATION_JSON);
+				log.info("薪事易结算req: {}", params);
+				HttpEntity<String> result = new RestTemplate().exchange(url1, HttpMethod.POST, new HttpEntity<>(params, headers), String.class);
+				log.info("薪事易结算resp:{}", result.getBody());
+				if (!JSONUtil.isJson(result.getBody())) {
+					return R.failed("结算失败");
+				}
+
+				JSONObject settleObj = JSONUtil.parseObj(result.getBody());
+
+
+				if (Objects.equals(settleObj.getInt("code"), CommonConstants.SUCCESS)) {
+					JSONObject dataJsonObj = settleObj.getJSONObject("data");
+					log.info("薪事易结算提交成功: {}", settleObj.getStr("data"));
+					note.setUpdateTime(LocalDateTime.now());
+					//streamId 获取不到
+					if (dataJsonObj != null) {
+						String requestId = dataJsonObj.getStr("requestId");
+						if (StrUtil.isNotBlank(requestId)) {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+							// 新增字段streamId
+							note.setStreamId(requestId);
+							noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+							noticeInfo.append(sysUser.getRealname()).append(":" + dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+						}
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						log.warn("薪事易结算提交成功 data 获取不到: {}", note.getSettleNo());
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
+				} else {
+					log.warn("薪事易结算失败: {}", note.getSettleNo());
+					note.setUpdateTime(LocalDateTime.now());
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+					noticeInfo.append(sysUser.getRealname()).append(":结算提交失败-").append(settleObj.getStr("msg")).append(";");
+
+					log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+
+				}
+			} catch (Exception e) {
+				log.error("", e);
+				log.warn("薪事易结算提交失败: {}", note.getSettleNo());
+				note.setUpdateTime(LocalDateTime.now());
+				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+				noticeInfo.append(sysUser.getRealname()).append(":结算提交失败;");
+
+				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+				redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+			}
+		}
+
+		noteService.updateBatchById(notes);
+
+		// 更新结算结果
+		SettleNoteStatusOutput output = noteService.selectSettleNoteStatus(input.getId());
+		WmScorePackage updateEntity = new WmScorePackage();
+		updateEntity.setId(input.getId());
+		updateEntity.setSettleStatus(output.toSettleStatus());
+		wmScorePackageService.updateById(updateEntity);
+
+		return R.ok(null, noticeInfo.toString());
+	}
+
 	/**
 	 * 福建企赋结算操作
 	 *

+ 381 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -742,6 +742,11 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			String taxCode = sysDept.getTaxCode();
 			return settleByOlading(note, wmScorePackage, sysUser, taxCode);
 		}
+		// 薪事易
+		else if (SubjectTypeEnum.TYPE_XIN_SHI_YI.getCode().equals(subType)) {
+			String taxCode = sysDept.getTaxCode();
+			return this.settleByXinshiyi(note, wmScorePackage, sysUser, taxCode);
+		}
 		// 税邦云
 		else {
 			String taxCode = sysDept.getTaxCode();
@@ -786,6 +791,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		List<WmScorePackageSettleNote> zhongYiYunNoteList = new ArrayList<>(ids.length);
 		List<WmScorePackageSettleNote> langchaoNoteList = new ArrayList<>(ids.length);
 		List<WmScorePackageSettleNote> yiMaNoteList = new ArrayList<>(ids.length);
+		List<WmScorePackageSettleNote> xinshiyiNoteList = new ArrayList<>(ids.length);
 		for (int i = 0; i < ids.length; i++) {
 			String id = ids[i];
 			WmScorePackageSettleNote note = this.baseMapper.selectById(id);
@@ -920,6 +926,10 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			else if (SubjectTypeEnum.TYPE_HE_CHUANG.getCode().equals(subType)) {
 				hechuangNoteList.add(note);
 			}
+			// 薪事易
+			else if (SubjectTypeEnum.TYPE_XIN_SHI_YI.getCode().equals(subType)) {
+				xinshiyiNoteList.add(note);
+			}
 			// 税邦云
 			else {
 				noteList.add(note);
@@ -1042,6 +1052,16 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 			return this.batchSettleByOlading(hechuangNoteList, taxCode);
 		}
 
+		// 薪事易
+		if (CollectionUtils.isNotEmpty(xinshiyiNoteList)) {
+			if (StringUtils.isNotEmpty(taxCode)) {
+				log.info("薪事易结算开始-获取会员所属企业的统一社会信用代码:{} ", taxCode);
+			} else {
+				return R.failed("未配置企业的统一社会信用代码");
+			}
+			return this.batchSettleByXinshiyi(yiMaNoteList, taxCode);
+		}
+
 		return R.ok();
 	}
 
@@ -1050,6 +1070,216 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return R.failed("因系统维护,暂时不能提起支付,有问题请联系客服");
 	}
 
+	/**
+	 * 薪事易结算
+	 *
+	 * @param noteList 结算记录
+	 * @param taxCode  企业三合一码
+	 * @return 结果
+	 */
+	private R batchSettleByXinshiyi(List<WmScorePackageSettleNote> noteList, String taxCode) {
+
+		// 加锁
+		List<Integer> noteIdList = noteList.stream().filter(note ->
+						redisTemplate.opsForValue().setIfAbsent(
+								CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId(),
+								noteList, CacheConstants.SETTLE_TIME, TimeUnit.DAYS))
+				.mapToInt(WmScorePackageSettleNote::getId).boxed().collect(Collectors.toList());
+
+		// 加锁记录数不等于提交记录数,说明存在在途交易
+		if (CollectionUtils.isEmpty(noteIdList)) {
+			log.error("当前用户存在其他结算请求");
+			return R.failed("当前用户存在其他结算请求");
+		} else {
+			if (!Objects.equals(noteList.size(), noteIdList.size())) {
+				// 删除锁
+				noteIdList.forEach(id -> redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + id));
+				log.error("当前用户存在其他结算请求");
+				return R.failed("当前用户存在其他结算请求");
+			}
+		}
+
+		HnqzUser operator = SecurityUtils.getUser();
+		String gigTokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/token?tenantId={tenantId}&action={action}&userId={userId}";
+		String gigSettleUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/settlement";
+
+		// 查询发票类目对应的字典
+		List<SysDictItem> zhongzhiInvoices = sysDictItemMapper.selectList(Wrappers.<SysDictItem>lambdaQuery()
+				.eq(SysDictItem::getType, "zhongzhi_invoice"));
+		Map<String, SysDictItem> dictItemMap = zhongzhiInvoices.stream()
+				.collect(Collectors.toMap(SysDictItem::getValue, Function.identity()));
+
+		List<Map<String, Object>> settleParamsMapper = new ArrayList<>();
+		Map<String, Map<String, Object>> detailMap = new HashMap<>();
+		noteList.forEach(note -> {
+			WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(note.getPackageId());
+
+			// 当前发票类目对应的字典信息
+			SysDictItem dictItem = dictItemMap.get(String.valueOf(note.getInvoiceType()));
+
+			// 封装结算参数
+			Map<String, Object> params;
+			if (detailMap.containsKey(note.getIdCardNumber())) {
+				params = detailMap.get(note.getIdCardNumber());
+				params.put("amount", String.valueOf(new BigDecimal((String) params.get("amount")).add(note.getSettleAmount()).doubleValue()));
+
+
+				LocalDate startTime = (LocalDate) params.get("taskStartTime");
+				LocalDate endTime = (LocalDate) params.get("taskEndTime");
+				LocalDate noteCreateTime = wmScorePackage.getCreateTime().toLocalDate();
+				LocalDate noteUpdateTime = wmScorePackage.getUpdateTime().toLocalDate();
+
+				if (noteCreateTime.isBefore(startTime)) {
+					params.put("taskStartTime", wmScorePackage.getCreateTime().toLocalDate());
+				}
+				if (noteUpdateTime.isAfter(endTime)) {
+					params.put("taskEndTime", wmScorePackage.getUpdateTime().toLocalDate());
+				}
+
+				Set<Integer> ids = (Set<Integer>) params.get("noteIds");
+				ids.add(note.getId());
+				params.put("noteIds", ids);
+			} else {
+				SysUser sysUser = sysUserService.getById(note.getUserId());
+				params = new HashMap<>(19);
+				params.put("tenantId", operator.getDeptId());
+				params.put("operatorId", operator.getId());
+				params.put("requestId", RandomStringUtils.randomAlphabetic(12));
+				params.put("taskName", String.format("%s(%s)_%s", sysUser.getRealname(), sysUser.getUsername(), System.currentTimeMillis()));
+				params.put("amount", String.valueOf(note.getSettleAmount().doubleValue()));
+				params.put("taskStartTime", wmScorePackage.getCreateTime().toLocalDate());
+				params.put("taskEndTime", wmScorePackage.getUpdateTime().toLocalDate());
+				params.put("taskLocation", "要易云");
+				params.put("username", sysUser.getUsername());
+				params.put("idCard", note.getIdCardNumber());
+				params.put("idCardType","ID_CARD");
+				params.put("realName", sysUser.getRealname());
+				params.put("bankCard", sysUser.getBankCardNumber());
+				params.put("bankPhone", sysUser.getBankPhone());
+				params.put("endType", "CSO");
+				params.put("enterpriseCode", taxCode);
+				params.put("subjectType", "XIN_SHI_YI");
+				params.put("channel", "DEFAULT");
+				params.put("subjectLocation", note.getSubjectLocation());
+				params.put("taskDescription", "根据要求,执行、并完成学术推广活动,并以在线平台工具采集、记录活动内容");
+				params.put("taxMode", "SPECIAL");
+				params.put("transactionModel", "CHANNEL");
+
+				Set<Integer> noteIds = new HashSet<>();
+				noteIds.add(note.getId());
+				params.put("noteIds", noteIds);
+				detailMap.put(note.getIdCardNumber(), params);
+			}
+		});
+
+		detailMap.forEach((key, value) -> settleParamsMapper.add(value));
+
+
+		// 开始结算
+		for (Map<String, Object> params : settleParamsMapper) {
+
+			Set<Integer> noteIds = (Set<Integer>) params.get("noteIds");
+			try {
+				// 获取请求token
+				ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(gigTokenUrl, String.class,
+						String.valueOf(operator.getDeptId()), "settle", String.valueOf(operator.getId()));
+				log.warn("获取结算token:{}", tokenResult.getBody());
+				if (!JSONUtil.isJson(tokenResult.getBody())) {
+					return R.failed("获取结算token失败");
+				}
+
+				JSONObject jsonObject = JSONUtil.parseObj(tokenResult.getBody());
+
+				if (jsonObject.getInt("code") != 0 || StrUtil.isBlank(jsonObject.getStr("data"))) {
+					return R.failed("获取结算token失败");
+				}
+
+				String token = jsonObject.getStr("data");
+
+				// 间隔100毫秒
+				Thread.sleep(100);
+
+				params.put("token", token);
+
+				// 发起结算
+				HttpHeaders headers = new HttpHeaders();
+				headers.setContentType(MediaType.APPLICATION_JSON);
+				log.info("薪事易结算req: {}", params);
+				HttpEntity<String> result = new RestTemplate().exchange(gigSettleUrl, HttpMethod.POST, new HttpEntity<>(params, headers), String.class);
+				log.info("薪事易结算resp: {}", result.getBody());
+				if (!JSONUtil.isJson(result.getBody())) {
+					return R.failed("结算失败");
+				}
+				JSONObject settelObj = JSONUtil.parseObj(result.getBody());
+
+				if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
+					JSONObject dataJsonObj = settelObj.getJSONObject("data");
+
+					noteIds.forEach(id -> {
+						log.info("薪事易结算结算提交成功");
+						// data获取不到
+						if (dataJsonObj == null) {
+							log.info("薪事易提交成功 data 获取不到");
+							return;
+						}
+
+						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+						LocalDateTime now = LocalDateTime.now();
+						note.setId(id);
+						note.setUpdateTime(now);
+						note.setSubToGigTime(now);
+
+						String requestId = dataJsonObj.getStr("requestId");
+						if (StrUtil.isNotBlank(requestId)) {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+							// 新增字段streamId
+							note.setStreamId(requestId);
+						} else {
+							note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+							log.info("薪事易提交失败 message:{}", dataJsonObj.getStr("message"));
+							redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+						}
+						this.baseMapper.updateById(note);
+					});
+
+				} else {
+					noteIds.forEach(id -> {
+						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+						note.setId(id);
+						log.info("薪事易结算提交失败: {}", note.getSettleNo());
+						LocalDateTime now = LocalDateTime.now();
+						note.setUpdateTime(now);
+						note.setSubToGigTime(now);
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						this.baseMapper.updateById(note);
+						log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+					});
+
+					return R.ok("结算失败");
+				}
+
+			} catch (Exception e) {
+				log.error("", e);
+				noteIds.forEach(id -> {
+					WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+					note.setId(id);
+					log.info("薪事易结算提交失败: {}", note.getSettleNo());
+					LocalDateTime now = LocalDateTime.now();
+					note.setUpdateTime(now);
+					note.setSubToGigTime(now);
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+					this.baseMapper.updateById(note);
+					log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + ":note_id_" + note.getId());
+				});
+				return R.ok("结算失败");
+			}
+		}
+
+		return R.ok("提交结算成功");
+	}
+
 	/**
 	 * 易马结算
 	 *
@@ -2793,6 +3023,156 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		}
 	}
 
+	/**
+	 * 薪事易结算
+	 *
+	 * @param note
+	 * @param wmScorePackage
+	 * @param sysUser
+	 * @param taxCode
+	 * @return
+	 */
+	private R settleByXinshiyi(WmScorePackageSettleNote note,
+							   WmScorePackage wmScorePackage,
+							   SysUser sysUser,
+							   String taxCode) {
+
+		/**
+		 * 加锁
+		 */
+		redisTemplate.opsForValue().set(CacheConstants.SETTLE_PACKAGE_KEY + note.getId(),
+				note.getId(), CacheConstants.SETTLE_TIME, TimeUnit.DAYS);
+
+		/**
+		 * 开始结算
+		 */
+
+		HnqzUser operator = SecurityUtils.getUser();
+		String gigTokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/token?tenantId={tenantId}&action={action}&userId={userId}";
+		String gigSettleUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/settlement";
+
+		StringBuilder noticeInfo = new StringBuilder();
+		try {
+			// 获取请求token
+			ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(gigTokenUrl, String.class,
+					String.valueOf(operator.getDeptId()), "settle", String.valueOf(operator.getId()));
+			log.warn("获取结算token:{}", tokenResult.getBody());
+			if (!JSONUtil.isJson(tokenResult.getBody())) {
+				return R.failed("获取结算token失败");
+			}
+
+			JSONObject jsonObject = JSONUtil.parseObj(tokenResult.getBody());
+
+			if (jsonObject.getInt("code") != 0 || StrUtil.isBlank(jsonObject.getStr("data"))) {
+				return R.failed("获取结算token失败");
+			}
+
+			String token = jsonObject.getStr("data");
+
+			// 间隔100毫秒
+			Thread.sleep(100);
+
+			// 查询发票类目对应的字典
+			SysDictItem zhongzhiInvoice = sysDictItemMapper.selectOne(Wrappers.<SysDictItem>lambdaQuery()
+					.eq(SysDictItem::getType, "zhongzhi_invoice")
+					.eq(SysDictItem::getValue, String.valueOf(note.getInvoiceType())));
+
+			// 封装结算参数
+			Map<String, Object> params = new HashMap<>();
+			params.put("token", token);
+			params.put("tenantId", operator.getDeptId());
+			params.put("operatorId", operator.getId());
+			params.put("requestId", RandomStringUtils.randomAlphabetic(12));
+			params.put("taskName", wmScorePackage.getScorePackageName() + "_" + System.currentTimeMillis());
+			params.put("amount", String.valueOf(note.getSettleAmount().doubleValue()));
+			params.put("taskStartTime", wmScorePackage.getCreateTime().toLocalDate());
+			params.put("taskEndTime", wmScorePackage.getUpdateTime().toLocalDate());
+			params.put("taskLocation", "要易云");
+			params.put("username", sysUser.getBankPhone());
+			params.put("idCard", sysUser.getIdCardNumber());
+			params.put("idCardType","ID_CARD");
+			params.put("realName", sysUser.getRealname());
+			params.put("bankCard", sysUser.getBankCardNumber());
+			params.put("bankPhone", sysUser.getBankPhone());
+			// 行业类别id
+			params.put("tagId", zhongzhiInvoice.getDescription());
+			// 税收项目编号
+			params.put("taskInvoiceContent", zhongzhiInvoice.getRemarks());
+			params.put("endType", "CSO");
+			params.put("enterpriseCode", taxCode);
+			params.put("subjectType", "XIN_SHI_YI");
+			params.put("channel", "DEFAULT");
+			params.put("subjectLocation", note.getSubjectLocation().getType());
+			params.put("taxMode", "SPECIAL");
+			params.put("transactionModel", "CHANNEL");
+			params.put("taskDescription", "根据要求,执行、并完成学术推广活动,并以在线平台工具采集、记录活动内容");
+
+			// 发起结算
+			HttpHeaders headers = new HttpHeaders();
+			headers.setContentType(MediaType.APPLICATION_JSON);
+			log.info("薪事易结算req: {}", params);
+			HttpEntity<String> result = new RestTemplate().exchange(gigSettleUrl, HttpMethod.POST, new HttpEntity<>(params, headers), String.class);
+			log.info("薪事易结算resp: {}", result.getBody());
+			if (!JSONUtil.isJson(result.getBody())) {
+				return R.failed("结算失败");
+			}
+			JSONObject settelObj = JSONUtil.parseObj(result.getBody());
+
+			LocalDateTime now = LocalDateTime.now();
+			if (Objects.equals(settelObj.getInt("code"), CommonConstants.SUCCESS)) {
+				JSONObject dataJsonObj = settelObj.getJSONObject("data");
+
+				log.info("薪事易结算提交成功: {}", note.getSettleNo());
+				note.setUpdateTime(now);
+				note.setSubToGigTime(now);
+				//data 获取不到
+				if (dataJsonObj != null) {
+					String requestId = dataJsonObj.getStr("requestId");
+					if (StrUtil.isNotBlank(requestId)) {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
+						// 新增字段streamId
+						note.setStreamId(requestId);
+						noticeInfo.append(sysUser.getRealname()).append(":提交结算成功;");
+					} else {
+						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+						noticeInfo.append(sysUser.getRealname()).append(":" + dataJsonObj.getStr("message"));
+						redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+					}
+				} else {
+					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+					log.warn("薪事易结算提交成功 data 获取不到: {}", note.getSettleNo());
+					noticeInfo.append(sysUser.getRealname()).append(":提交结算成功,业务流水号获取不到,请联系管理员;");
+					redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+				}
+			} else {
+				log.warn("薪事易结算提交失败: {}", note.getSettleNo());
+				note.setSubToGigTime(now);
+				note.setUpdateTime(now);
+				note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+				noticeInfo.append(sysUser.getRealname()).append(":结算提交失败-").append(settelObj.getStr("msg")).append(";");
+
+				log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+				redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+
+			}
+		} catch (Exception e) {
+			log.error("", e);
+			log.warn("薪事易结算提交失败: {}", note.getSettleNo());
+			LocalDateTime now = LocalDateTime.now();
+			note.setSubToGigTime(now);
+			note.setUpdateTime(now);
+			note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
+			noticeInfo.append(sysUser.getRealname()).append(":结算提交失败;");
+
+			log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
+			redisTemplate.delete(CacheConstants.SETTLE_PACKAGE_KEY + note.getId());
+		}
+
+		this.baseMapper.updateById(note);
+
+		return R.ok(null, noticeInfo.toString());
+	}
+
 	/**
 	 * 福建企赋结算
 	 *
@@ -2939,7 +3319,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 	}
 
 	/**
-	 * 众蚁云结算
+	 * 中智结算
 	 *
 	 * @param note
 	 * @param wmScorePackage