清账单代码调试修改
This commit is contained in:
parent
2684976000
commit
193ac58f71
|
|
@ -138,7 +138,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
|||
|
||||
private void handleOAUpdate(String clearbillid) {
|
||||
DynamicObject[] ddos = BusinessDataServiceHelper.load(entityName, "id,billno,billstatus,shjh_clearbillid,shjh_clearbillno,createtime,creator,modifier",
|
||||
new QFilter[]{new QFilter("shjh_clearbillid", "=", clearbillid)});
|
||||
new QFilter[]{new QFilter("shjh_clearbillid", QCP.equals, clearbillid)});
|
||||
DynamicObject detailinfo;
|
||||
for (int j = 0; j < ddos.length; j++) {
|
||||
detailinfo = ddos[j];
|
||||
|
|
@ -167,6 +167,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
|||
QFilter qFilter;
|
||||
DynamicObject[] pzbs;
|
||||
DynamicObject pzbinfo;//配置表
|
||||
DynamicObject userinfo;//用户
|
||||
DynamicObjectCollection users;//配置表中的被通知人集合
|
||||
for (int i = 0; i < dos.length; i++) {
|
||||
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
|
||||
|
|
@ -182,28 +183,34 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
|||
this.operationResult.setShowMessage(true);//前端界面 是否显示提示消息
|
||||
continue;
|
||||
}
|
||||
pzbinfo = BusinessDataServiceHelper.loadSingleFromCache(pzbs[0].getLong("id"), pzbName);
|
||||
pzbinfo = BusinessDataServiceHelper.loadSingle(pzbs[0].getLong("id"), pzbName);
|
||||
users = pzbinfo.getDynamicObjectCollection("shjh_users");
|
||||
for (DynamicObject user : users) {
|
||||
user.getDynamicObject("fbasedataid");//fbasedataid
|
||||
userinfo = user.getDynamicObject("fbasedataid");//fbasedataid
|
||||
//根据清账单id和创建人id判断清账明细单是否已生成
|
||||
qFilter = new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id"));
|
||||
qFilter.and("creator", QCP.equals, user.getDynamicObject("fbasedataid").getLong("id"));
|
||||
qFilter.and("creator", QCP.equals, userinfo.getLong("id"));
|
||||
if (!QueryServiceHelper.exists(entityName, qFilter.toArray())) {
|
||||
// userinfo = BusinessDataServiceHelper.loadSingleFromCache(user.getDynamicObject("fbasedataid"), userName);
|
||||
//新增一个清账明细单
|
||||
detailinfo = newDetailBill(prinfo, user.getDynamicObject("fbasedataid"));
|
||||
detailinfo = newDetailBill(prinfo, userinfo);
|
||||
//发送清账明细单的OA待办
|
||||
JhzjUtils.handleOA(detailinfo, "0", "0");
|
||||
// JhzjUtils.sendEmail(users.get(j).getString("email"), "请登录资金系统操作清账明细单",
|
||||
// detailinfo.getString("billno") + "\n 详情页面" + JhzjUtils.getBillPCURL(detailinfo), "清账明细单新增");
|
||||
JhzjUtils.sendEmail(userinfo.getString("email"), "请登录资金系统操作清账明细单",
|
||||
detailinfo.getString("billno") + "\n 详情页面" + JhzjUtils.getBillPCURL(detailinfo), "清账明细单新增");
|
||||
}
|
||||
}
|
||||
}
|
||||
//处理完成提示
|
||||
this.operationResult.setSuccess(true);
|
||||
this.operationResult.setMessage("清账明细单生成成功");//前端界面提示内容
|
||||
this.operationResult.setShowMessage(true);//前端界面 是否显示提示消息
|
||||
}
|
||||
|
||||
private DynamicObject newDetailBill(DynamicObject prinfo, DynamicObject userinfo) {
|
||||
//根据清账单和被通知人创建清账明细单
|
||||
DynamicObject detailinfo = BusinessDataServiceHelper.newDynamicObject(entityName);
|
||||
detailinfo.set("billno", prinfo.getString("billno"));//单据编号
|
||||
detailinfo.set("org", prinfo.getDynamicObject("org"));//公司
|
||||
detailinfo.set("shjh_currency", prinfo.getDynamicObject("shjh_currency"));//币别
|
||||
detailinfo.set("shjh_bizdate", prinfo.getDate("shjh_bizdate"));//业务日期
|
||||
|
|
@ -293,7 +300,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
|||
|
||||
//若存在(暂存、驳回)的清账明细单,则系统自动处理:清账明细单【单据状态】全标记为作废,并消除被作废明细单的OA待办。
|
||||
ddos = BusinessDataServiceHelper.load(entityName, "id,billno,billstatus,shjh_clearbillid,shjh_clearbillno,createtime,creator,modifier",
|
||||
new QFilter[]{new QFilter("shjh_clearbillid", "=", prinfo.getString("id"))});
|
||||
new QFilter[]{new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id"))});
|
||||
for (int j = 0; j < ddos.length; j++) {
|
||||
detailinfo = ddos[j];
|
||||
billstatus = detailinfo.getString("billstatus");
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
private static final String updateDetailReject = "update tk_shjh_clear_acctdetail set fbillstatus='E' where fid=?;";
|
||||
private static final String updateClearBillSave = "update tk_shjh_clear_account set fbillstatus='A' where fbillstatus='B' and fid=?;";
|
||||
private static final String clearBillName = "shjh_clear_account";//清账单
|
||||
private static final String userName = "bos_user";//用户
|
||||
|
||||
/**
|
||||
* 操作校验通过之后,开启事务之前,触发此事件;
|
||||
|
|
@ -51,7 +52,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
}
|
||||
//清账明细单【未清金额】+【账扣金额】+【尾差金额】≥【本次核销金额合计】
|
||||
if(!checkAmount(prinfo)){
|
||||
e.setCancelMessage(billno+"【未清金额】+【账扣金额】+【尾差金额】≥【本次核销金额合计】,才允许提交");
|
||||
e.setCancelMessage(billno+"【未清金额】+【账扣】+【尾差】≥【本次核销金额合计】,本次核销金额合计-账扣-尾差 >=0,才允许提交");
|
||||
e.setCancel(true);
|
||||
}
|
||||
//判断对应的清账单是否已提交,如果是,则不允许提交此明细单
|
||||
|
|
@ -74,6 +75,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
e.setCancel(true);
|
||||
}
|
||||
}else if("reject".equals(eok)){
|
||||
JhzjUtils.sendWEIXINQY(null,null,null,null);
|
||||
//驳回校验
|
||||
if(!"B".equals(prinfo.getString("billstatus"))){
|
||||
//清账明细单【单据状态】=已提交,才允许点击驳回按钮
|
||||
|
|
@ -114,7 +116,8 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
entrytotal = entrytotal.add(doc.get(i).getBigDecimal("shjh_e_cursettle"));//累计分录本次核销金额
|
||||
}
|
||||
}
|
||||
if(billtotal.compareTo(entrytotal) >= 0){
|
||||
//本次核销金额合计-账扣-尾差 >=0 才允许提交
|
||||
if(billtotal.compareTo(entrytotal) >= 0 && entrytotal.compareTo(JhzjUtils.addTwoAmount(a2,a3)) >= 0){
|
||||
//校验通过返回true
|
||||
return true;
|
||||
}
|
||||
|
|
@ -221,6 +224,10 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
if(entrytotal.compareTo(q1.add(q2).add(q3)) == 0){
|
||||
clearBillInfo.set("billstatus","B");
|
||||
}
|
||||
//已认领收款金额=本次核销金额合计-账扣-尾差
|
||||
clearBillInfo.set("shjh_claimamount", entrytotal.subtract(q1).subtract(q2));
|
||||
//未认领收款金额=收款金额-已认领收款金额
|
||||
clearBillInfo.set("shjh_unclaimamount", q3.subtract(clearBillInfo.getBigDecimal("shjh_claimamount")));
|
||||
SaveServiceHelper.save(new DynamicObject[]{clearBillInfo});
|
||||
//解除清账单互斥锁
|
||||
JhzjUtils.unLockBill(clearBillInfo);
|
||||
|
|
@ -252,10 +259,13 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
//清账单分录
|
||||
DynamicObjectCollection cleardoc = clearBillInfo.getDynamicObjectCollection("shjh_details");
|
||||
DynamicObject clearEntryInfo;
|
||||
BigDecimal entrytotal = BigDecimal.ZERO;
|
||||
for (int i = cleardoc.size()-1; i >=0; i--) {
|
||||
clearEntryInfo = cleardoc.get(i);
|
||||
if(idsets.contains(clearEntryInfo.getString("id"))){
|
||||
if(idsets.contains(clearEntryInfo.getString("shjh_e_detailentryid"))){
|
||||
cleardoc.remove(clearEntryInfo);
|
||||
}else{
|
||||
entrytotal = entrytotal.add(clearEntryInfo.getBigDecimal("shjh_e_cursettle"));//累计分录本次核销金额
|
||||
}
|
||||
}
|
||||
//处理清账单账扣
|
||||
|
|
@ -266,7 +276,16 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
BigDecimal q2 = JhzjUtils.reduceTwoAmount(clearBillInfo.getBigDecimal("shjh_diffamount"),
|
||||
detailBillInfo.getBigDecimal("shjh_diffamount"));
|
||||
clearBillInfo.set("shjh_diffamount",q2);
|
||||
//已认领收款金额=本次核销金额合计-账扣-尾差
|
||||
clearBillInfo.set("shjh_claimamount", entrytotal.subtract(q1).subtract(q2));
|
||||
//未认领收款金额=收款金额-已认领收款金额
|
||||
clearBillInfo.set("shjh_unclaimamount", JhzjUtils.reduceTwoAmount(clearBillInfo.getBigDecimal("shjh_receamount"),
|
||||
clearBillInfo.getBigDecimal("shjh_claimamount")));
|
||||
|
||||
if("B".equals(clearBillInfo.getString("billstatus"))){
|
||||
//若清账单【单据状态】=已提交,则更新清账单【单据状态】=暂存。
|
||||
clearBillInfo.set("billstatus","A");
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{clearBillInfo});
|
||||
//解除清账单互斥锁
|
||||
JhzjUtils.unLockBill(clearBillInfo);
|
||||
|
|
@ -280,8 +299,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
DynamicObject prinfo;
|
||||
String result;
|
||||
for (int i = 0; i < dos.length; i++) {
|
||||
prinfo = dos[i];
|
||||
|
||||
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
|
||||
//删除对应清账单中由明细单反写的表头和分录数据
|
||||
result = reDeleteClearBill(prinfo);
|
||||
if(!"success".equals(result)){
|
||||
|
|
@ -299,6 +317,7 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
//驳回具体实现
|
||||
DynamicObject[] dos = e.getDataEntities();
|
||||
DynamicObject prinfo;
|
||||
DynamicObject userinfo;
|
||||
String result;
|
||||
for (int i = 0; i < dos.length; i++) {
|
||||
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
|
||||
|
|
@ -310,13 +329,12 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
|||
this.operationResult.setShowMessage(true);//前端界面 是否显示提示消息
|
||||
continue;
|
||||
}
|
||||
//若清账单【单据状态】=已提交,则更新清账单【单据状态】=暂存。
|
||||
DB.update(DBRoute.of("fi"), updateClearBillSave, new Object[]{prinfo.getString("shjh_clearbillid")});
|
||||
//清账明细单【单据状态】=驳回
|
||||
DB.update(DBRoute.of("fi"), updateDetailReject, new Object[]{prinfo.getLong("id")});
|
||||
|
||||
userinfo = BusinessDataServiceHelper.loadSingle(prinfo.getDynamicObject("modifier").getLong("id"),
|
||||
userName);
|
||||
//驳回时,对清账明细单修改人发送邮件通知,OA待办 业务员可修改后,再次提交。
|
||||
JhzjUtils.sendEmail(prinfo.getDynamicObject("modifier").getString("email"),"请登录资金系统操作清账明细单",
|
||||
JhzjUtils.sendEmail(userinfo.getString("email"),"请登录资金系统操作清账明细单",
|
||||
prinfo.getString("billno")+"\n 详情页面"+JhzjUtils.getBillPCURL(prinfo),"清账明细单新增");
|
||||
JhzjUtils.handleOA(prinfo,"0", "0");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,8 @@ public class JhzjUtils {
|
|||
emailInfo.setTitle(title);
|
||||
emailInfo.setContent(content);
|
||||
List receivers = new ArrayList<>();
|
||||
receivers.add(email);//接收人1
|
||||
receivers.add(email);//增加接收人
|
||||
emailInfo.setReceiver(receivers);
|
||||
Map<String, Object> sendResult = EmailHandler.sendEmail(emailInfo);
|
||||
//保存邮件发送日志
|
||||
saveLog(email,"邮件",content,(String)sendResult.get("description"),(Boolean)sendResult.get("result"),operation);
|
||||
|
|
@ -118,12 +119,13 @@ public class JhzjUtils {
|
|||
message.setMessageTag(tag);
|
||||
//信息发送人
|
||||
message.setSenderId(RequestContext.get().getCurrUserId());
|
||||
message.setType(MessageInfo.TYPE_MESSAGE);
|
||||
message.setType("notice_wx");//消息类型的编号
|
||||
StringBuilder notifyType = new StringBuilder();
|
||||
notifyType.append(MessageChannels.WEIXINQY).append(",");
|
||||
notifyType.append(MessageChannels.EMAIL);
|
||||
// notifyType.append(MessageChannels.EMAIL).append(",");
|
||||
notifyType.append(MessageChannels.WEIXINQY);
|
||||
message.setNotifyType(notifyType.toString());
|
||||
MessageCenterServiceHelper.sendMessage(message);
|
||||
long result = MessageCenterServiceHelper.sendMessage(message);
|
||||
logger.info("微信消息返回"+result);//2163947346411418624
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -289,7 +291,7 @@ public class JhzjUtils {
|
|||
//https://ip:port/ierp/index.html?formId=er_tripreqbill&pkId=721810009540800512
|
||||
String contextUrl = System.getProperty("domain.contextUrl");
|
||||
String formId = prinfo.getDataEntityType().getName();
|
||||
return contextUrl+"?formId="+formId+"&pkId="+prinfo.getLong("id");
|
||||
return contextUrl+"/index.html?formId="+formId+"&pkId="+prinfo.getLong("id");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -260,8 +260,9 @@ public class PersonControler implements Serializable {
|
|||
如果没有同步用户,即t_bas_immapping表中查不到数据,则会跳转到苍穹登陆界面;用户输入信息之后苍穹会自动在t_bas_immapping中获取openid并存储;
|
||||
* ( 此逻辑在kd.bos.login.thirdauth.app.tencent.WxgzhLoginAfter中,目前标准代码存在bug,多系统对接对于同一个fuserid会替换openid,
|
||||
* 导致单点登录到别的系统失败,多系统对接需要修改总部标准代码或者联系总部出私包解决 )
|
||||
* select fid,FIMTYPEID,FOPENID,FUSERID from t_bas_immapping
|
||||
* */
|
||||
|
||||
//insert into t_bas_immapping(fid,FIMTYPEID,FOPENID,FUSERID) values (1992929292121,3,'690',2116742421407602688)
|
||||
}
|
||||
|
||||
private void handlePersonForCustomer(UserParam ups){
|
||||
|
|
|
|||
Loading…
Reference in New Issue