业务收款认领通知
This commit is contained in:
parent
84d6803603
commit
5a16032353
|
|
@ -25,7 +25,7 @@ public class FundPlanCollectionTask extends AbstractTask implements Plugin {
|
|||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
//查询当月已审核收款类资金计划(收款不区分公司,当月应只有一个)
|
||||
//TODO 查询当月已审核收款类资金计划(收款不区分公司,当月应只有一个)
|
||||
QFilter qFilter = new QFilter("receredtype", QCP.equals, "0");
|
||||
qFilter.and("creditamount", QCP.not_equals, BigDecimal.ZERO);
|
||||
qFilter.and("claimnoticebillno", QCP.equals, "");
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import java.util.*;
|
|||
|
||||
/**
|
||||
* 定时任务 未入账收付款流水通知
|
||||
* 流水单实体 bei_transdetail
|
||||
* @author yuxueliang
|
||||
*/
|
||||
public class NotCreditedNoticeTask extends AbstractTask implements Plugin {
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ import java.math.BigDecimal;
|
|||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 定时任务收款单自动下推生成清账单
|
||||
* @author yuxueliang
|
||||
* 定时任务 收款单自动下推生成清账单
|
||||
* @author LiGuiQiang
|
||||
*/
|
||||
public class ReceBillToClearBillTask extends AbstractTask implements Plugin {
|
||||
private static final String srcEntityName = "cas_recbill";//源单 收款单
|
||||
|
|
@ -28,7 +28,7 @@ public class ReceBillToClearBillTask extends AbstractTask implements Plugin {
|
|||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
//设置定时任务,按时下推清账单,T+1日下推T及T之前收款单,生成清账单
|
||||
//TODO 设置定时任务,按时下推清账单,T+1日下推T及T之前收款单,生成清账单
|
||||
QFilter qFilter = new QFilter("receredtype", QCP.equals, "0");
|
||||
qFilter.and("creditamount", QCP.not_equals, BigDecimal.ZERO);
|
||||
qFilter.and("claimnoticebillno", QCP.equals, "");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
package shjh.jhzj7.fi.fi.plugin.task;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.schedule.executor.AbstractTask;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 定时任务 业务收款认领通知 仅发送N-1及之前的未认领单据
|
||||
* @author yuxueliang
|
||||
*/
|
||||
public class UnclaimedNoticeTask extends AbstractTask implements Plugin {
|
||||
|
||||
private static final String entityName = "cas_claimannounce";//认领中心-公告
|
||||
|
||||
private static final Log logger = LogFactory.getLog(UnclaimedNoticeTask.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
//获取昨天的日期字符串
|
||||
LocalDate yesterday = LocalDate.now().minusDays(1);
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
String yesterdayStr = yesterday.format(formatter);
|
||||
logger.info("昨天"+yesterdayStr);
|
||||
QFilter qFilter = new QFilter("businesstype", QCP.equals, "rec");//业务类型-收款
|
||||
qFilter.and("claimstatus", QCP.equals, "0");//认领通知单状态-待认领
|
||||
try {
|
||||
qFilter.and("createtime", QCP.less_than, new SimpleDateFormat("yyyy-MM-dd").parse(yesterdayStr));//截至到昨天之前的
|
||||
} catch (ParseException e) {
|
||||
logger.info("日期格式化异常"+e.getMessage());
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
DynamicObject[] colls = BusinessDataServiceHelper.load(entityName, "id", qFilter.toArray());
|
||||
DynamicObjectCollection usercolls;
|
||||
Map<String, List<DynamicObject>> userBills = new HashMap<>();//缓存用户和认领单的关系
|
||||
String userid;
|
||||
List<DynamicObject> billlist;
|
||||
for(DynamicObject dio : colls){
|
||||
dio = BusinessDataServiceHelper.loadSingle(dio.getLong("id"),entityName);
|
||||
usercolls = dio.getDynamicObjectCollection("entryentity1");//认领人集合
|
||||
for(DynamicObject userinfo : usercolls){
|
||||
if("1".equals(userinfo.getString("claimtype"))){
|
||||
//认领类别 是用户
|
||||
userid = userinfo.getString("claimtypeid");
|
||||
billlist = userBills.get(userid);
|
||||
if(billlist == null){
|
||||
billlist = new ArrayList<>();
|
||||
userBills.put(userid,billlist);
|
||||
}
|
||||
billlist.add(dio);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//遍历map发送消息
|
||||
List<Long> receivers = new ArrayList<>(1);//消息接收人
|
||||
String title;
|
||||
String content;
|
||||
for (Map.Entry<String, List<DynamicObject>> entry : userBills.entrySet()) {
|
||||
userid = entry.getKey();
|
||||
billlist = entry.getValue();
|
||||
receivers.clear();
|
||||
receivers.add(Long.parseLong(userid));
|
||||
title = "业务认领通知";
|
||||
content = "请登录资金系统处理认领公告 共"+billlist.size()+"笔\n";
|
||||
JhzjUtils.sendEmail(title,content+JhzjUtils.getTableHtml(billlist),receivers);
|
||||
JhzjUtils.sendWEIXINQY(title,content,receivers);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -76,6 +76,69 @@ public class JhzjUtils {
|
|||
SaveServiceHelper.save(new DynamicObject[]{billinfo});
|
||||
}
|
||||
|
||||
/**
|
||||
* 将认领公告列表组装成html语句中的table
|
||||
* @param billlist 认领公告的列表
|
||||
*/
|
||||
public static String getTableHtml(List<DynamicObject> billlist){
|
||||
|
||||
StringBuffer tabstr = new StringBuffer();
|
||||
tabstr.append("<table border='1'> ");
|
||||
//设置表头-10列
|
||||
tabstr.append("<thead> <tr> <th>认领通知单</th> <th>银行账号</th> <th>对方账号</th> <th>对方户名</th> <th>币种</th> <th>收款金额</th> ");
|
||||
tabstr.append("<th>交易日期</th> <th>摘要</th> <th>票据号/明细编号</th> <th>承兑人名称/明细流水号</th></tr></thead> ");
|
||||
//设置表体
|
||||
tabstr.append("<tbody> ");
|
||||
//设置每一行数据
|
||||
for (DynamicObject doinfo : billlist){
|
||||
tabstr.append("<tr> ");//行-开始
|
||||
|
||||
tabstr.append("<td>");//单元格-开始
|
||||
tabstr.append(doinfo.getString("billno"));//认领通知单
|
||||
tabstr.append("</td> ");//单元格-结束
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getDynamicObject("accountbank").getString("bankaccountnumber"));//银行账号
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("oppbanknumber"));//对方账号
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("oppunit"));//对方户名
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getDynamicObject("currency").getString("name"));//币种
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("reamount"));//收款金额
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("tradetime"));//交易日期
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("description"));//摘要
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("tradedetailno"));//票据号/明细编号
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("<td>");
|
||||
tabstr.append(doinfo.getString("detailid"));//承兑人名称/明细流水号
|
||||
tabstr.append("</td> ");
|
||||
|
||||
tabstr.append("</tr> ");//行-结束
|
||||
}
|
||||
tabstr.append("</tbody> </table>");
|
||||
return tabstr.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装入参,给指定单个人员发邮件
|
||||
* @param email 邮箱地址
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ public class PersonControler implements Serializable {
|
|||
private static final Log log = LogFactory.getLog(PersonControler.class);
|
||||
private static final String apimenthod = "/person_sync";
|
||||
private static final String insertMmapping = "insert into t_bas_immapping(FID,FOPENID,FUSERID,FIMTYPEID) values (?,?,?,3);";
|
||||
private static final String updateMmapping = "update t_bas_immapping set FOPENID=? where FUSERID=?;";
|
||||
|
||||
/**
|
||||
* @param bizParam 入参json格式数据
|
||||
|
|
@ -218,8 +219,8 @@ public class PersonControler implements Serializable {
|
|||
// itemInfo.put("message","");
|
||||
//更新人员对应客户的银行信息
|
||||
handlePersonForCustomer(result);
|
||||
//处理人员金蝶id和企微id的对应关系
|
||||
handlePersonImmapping(result);
|
||||
//新增人员金蝶id和企微id的对应关系
|
||||
insertPersonImmapping(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -240,6 +241,8 @@ public class PersonControler implements Serializable {
|
|||
// itemInfo.put("message","");
|
||||
//更新人员对应客户的银行信息
|
||||
handlePersonForCustomer(result);
|
||||
//修改人员金蝶id和企微id的对应关系
|
||||
updatePersonImmapping(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -256,17 +259,22 @@ public class PersonControler implements Serializable {
|
|||
}
|
||||
}
|
||||
|
||||
private void handlePersonImmapping(UserParam ups){
|
||||
private void insertPersonImmapping(UserParam ups){
|
||||
/*
|
||||
* 这里可以使用企业微信同步用户,也可以直接在系统库中t_bas_immapping表插入数据,需要苍穹中用户的主键和微信中用户的openId,可以在苍穹的系统库使用sql:
|
||||
insert into t_bas_immapping (fid, FIMTYPEID, FOPENID) value (主键, 类型(3), '微信公众号用户的openId');
|
||||
update t_bas_immapping SET FUSERID = (select fid from t_sec_user where fphone = '用户手机号') where fid = '用户手机号';
|
||||
如果没有同步用户,即t_bas_immapping表中查不到数据,则会跳转到苍穹登陆界面;用户输入信息之后苍穹会自动在t_bas_immapping中获取openid并存储;
|
||||
*/
|
||||
//insert into t_bas_immapping(fid,FIMTYPEID,FOPENID,FUSERID) values (1992929292121,3,'690',2116742421407602688)
|
||||
DB.update(DBRoute.of("sys"), insertMmapping, new Object[]{ID.genLongId(),ups.getDataMap().get("shjh_oaid"),ups.getId()});
|
||||
}
|
||||
|
||||
private void updatePersonImmapping(UserParam ups){
|
||||
if(!EsbUtils.isEmpty((String) ups.getDataMap().get("shjh_oaid"))){
|
||||
DB.update(DBRoute.of("sys"), updateMmapping, new Object[]{ups.getDataMap().get("shjh_oaid"),ups.getId()});
|
||||
}
|
||||
}
|
||||
|
||||
private void handlePersonForCustomer(UserParam ups){
|
||||
String cusnumber = (String) ups.getDataMap().get("number");//客户编号-即是 人员的编号
|
||||
DynamicObject currentCus = BusinessDataServiceHelper.loadSingle(cusEntityName,new QFilter[]{new QFilter("number","=",cusnumber)});
|
||||
|
|
|
|||
Loading…
Reference in New Issue