lc/lc123/cloud/app/plugin/task/DaysRemainingTask.java

383 lines
21 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tqq9.lc123.cloud.app.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.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import org.apache.commons.lang3.StringUtils;
import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils;
import tqq9.lc123.cloud.app.plugin.utils.DateDifferenceCalculator;
import tqq9.lc123.cloud.app.plugin.utils.EmailUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 供应商、注册证证照时间到期时间计算并发送预警邮件
* 增加生产商、采购合同
*/
public class DaysRemainingTask extends AbstractTask implements Plugin {
private final static Log logger = LogFactory.getLog(DaysRemainingTask.class);
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
int warnDays = 0;
String warnDaysStr = ConfigUtils.getDevSysConfigByNumber("WARN_LICENCE_DAYS");//预警天数
if(StringUtils.isNotBlank(warnDaysStr)){
warnDays = Integer.valueOf(warnDaysStr);
}
//key:用户编码value:邮箱
Map<String, String> emailMap = new HashMap<>();
//供应商
QFilter f1 = new QFilter("enable", QCP.equals, "1");
QFilter f2 = new QFilter("status", QCP.equals, "C");
DynamicObject[] suppliers = BusinessDataServiceHelper.load("bd_supplier",
"id,number,name,tqq9_datefield1,tqq9_validdays_ylqxsc,tqq9_datefield21,tqq9_validdays_ylqxjy,tqq9_datefield4,tqq9_validdays_ylqxjy2,tqq9_datefield22," +
"tqq9_validdays_yljg,tqq9_licenseenddate,tqq9_integerfield,tqq9_zlbzxyyxqz,tqq9_validdays_zlbz,tqq9_datefield2,tqq9_validdays_gmp,tqq9_datefield7," +
"tqq9_validdays_frsq,tqq9_datefield9,tqq9_validdays_yyzz,tqq9_gspyxqz,tqq9_validdays_gsp,tqq9_minvaliddays,creator.email",
new QFilter[]{f1, f2});
Date currentDate = new Date();//当前日期
for (DynamicObject supplier : suppliers) {
String number = supplier.getString("number");//供应商编码
String name = supplier.getString("name");//供应商名称
int remainingDays = 0;
StringBuilder sb = new StringBuilder();
//医疗器械生生产许可证
Date tqq9_datefield1 = supplier.getDate("tqq9_datefield1");//失效日期
if (tqq9_datefield1 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield1, currentDate);
supplier.set("tqq9_validdays_ylqxsc", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("医疗器械生生产许可证距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//医疗器械经营许可证
Date tqq9_datefield21 = supplier.getDate("tqq9_datefield21");//失效日期
if (tqq9_datefield21 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield21, currentDate);
supplier.set("tqq9_validdays_ylqxjy", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("医疗器械经营许可证距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//第二类医疗器械经营备案凭证
Date tqq9_datefield4 = supplier.getDate("tqq9_datefield4");//失效日期
if (tqq9_datefield4 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield4, currentDate);
supplier.set("tqq9_validdays_ylqxjy2", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("第二类医疗器械经营备案凭证距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//医疗机构执行许可证
Date tqq9_datefield22 = supplier.getDate("tqq9_datefield22");//失效日期
if (tqq9_datefield22 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield22, currentDate);
supplier.set("tqq9_validdays_yljg", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("医疗机构执行许可证距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//化妆品许可证
Date tqq9_licenseenddate = supplier.getDate("tqq9_licenseenddate");//失效日期
if (tqq9_licenseenddate != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_licenseenddate, currentDate);
supplier.set("tqq9_integerfield", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("化妆品许可证距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//质量保证书
Date tqq9_zlbzxyyxqz = supplier.getDate("tqq9_zlbzxyyxqz");//失效日期
if (tqq9_zlbzxyyxqz != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_zlbzxyyxqz, currentDate);
supplier.set("tqq9_validdays_zlbz", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("质量保证书距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//GMP证书
Date tqq9_datefield2 = supplier.getDate("tqq9_datefield2");//失效日期
if (tqq9_datefield2 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield2, currentDate);
supplier.set("tqq9_validdays_gmp", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("GMP证书距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//法人委托授权书
Date tqq9_datefield7 = supplier.getDate("tqq9_datefield7");//失效日期
if (tqq9_datefield7 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield7, currentDate);
supplier.set("tqq9_validdays_frsq", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("法人委托授权书距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//营业执照
Date tqq9_datefield9 = supplier.getDate("tqq9_datefield9");//失效日期
if (tqq9_datefield9 != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield9, currentDate);
supplier.set("tqq9_validdays_yyzz", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("营业执照距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//GSP证书
Date tqq9_gspyxqz = supplier.getDate("tqq9_gspyxqz");//失效日期
if (tqq9_gspyxqz != null) {
remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_gspyxqz, currentDate);
supplier.set("tqq9_validdays_gsp", remainingDays);
Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
if (remainingDays < tqq9_minvaliddays) {
supplier.set("tqq9_minvaliddays", remainingDays);
}
if(remainingDays <= warnDays){
//与预警天数进行对比
sb.append("GSP证书距离过期时间还剩余 " + remainingDays + " 天。");
}
}
//发送邮件
if(StringUtils.isNotBlank(sb.toString())){
DynamicObject creator = supplier.getDynamicObject("creator");//创建人
if(creator != null){
String emailAddress = null;
String creatorNumber = creator.getString("number");
if(emailMap.containsKey(creatorNumber)){
emailAddress = emailMap.get(creatorNumber);
}else{
creator = BusinessDataServiceHelper.loadSingle(creator.getPkValue(),
creator.getDynamicObjectType().getName(), "name,email");
emailAddress = creator.getString("email");
}
if(StringUtils.isNotBlank(emailAddress)){
emailMap.put(creatorNumber, emailAddress);
String warnStr = "供应商【编码:"+number+",名称:"+name+"】证照到期提醒:"+ sb;
EmailUtils.sendEmail(emailAddress, warnStr, "供应商证照到期提醒");
}
}
}
}
SaveServiceHelper.save(suppliers);
//注册证
DynamicObject[] tqq9_registration = BusinessDataServiceHelper.load("tqq9_registration",
"id,number,name,tqq9_enddate,tqq9_validdays,creator.email",
new QFilter[]{f1, f2});
for (DynamicObject dynamicObject : tqq9_registration) {
String number = dynamicObject.getString("number");
String name = dynamicObject.getString("name");
//商品注册证
Date tqq9_enddate = dynamicObject.getDate("tqq9_enddate");//失效日期
if (tqq9_enddate != null) {
int remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_enddate, currentDate);
dynamicObject.set("tqq9_validdays", remainingDays);
if(remainingDays <= warnDays){
//商品注册证
String warnStr = "商品注册证【编码:"+number+",名称:"+name+"】证照到期提醒:距离过期时间还剩余 " + remainingDays + " 天。";
DynamicObject creator = dynamicObject.getDynamicObject("creator");
if(creator != null){
String emailAddress = null;
String creatorNumber = creator.getString("number");
if(emailMap.containsKey(creatorNumber)){
emailAddress = emailMap.get(creatorNumber);
}else{
creator = BusinessDataServiceHelper.loadSingle(creator.getPkValue(),
creator.getDynamicObjectType().getName(), "name,email");
emailAddress = creator.getString("email");
}
if(StringUtils.isNotBlank(emailAddress)){
emailMap.put(creatorNumber, emailAddress);
EmailUtils.sendEmail(emailAddress, warnStr, "商品注册证到期提醒");
}
}
}
}
}
SaveServiceHelper.save(tqq9_registration);
//生产商
DynamicObject[] proxyandfactoryArr = BusinessDataServiceHelper.load("tqq9_proxyandfactory",
"id,name,number,creator," +
"tqq9_taxno,tqq9_prolicense,tqq9_saleno,tqq9_safeno,tqq9_beautyno," +
"tqq9_taxenddate,tqq9_proenddate,tqq9_saleenddate,tqq9_safeenddate,tqq9_beautyenddate," +
"tqq9_yyzzts,tqq9_qxscxkzts,tqq9_qxjyxkzts,tqq9_fsaqxkzts,tqq9_hzpxkzts," +
"tqq9_clnentry.tqq9_clnenddate,tqq9_clnentry.tqq9_xdpwsxkzts",
new QFilter[]{f1, f2});
for (DynamicObject proxyandfactory : proxyandfactoryArr) {
StringBuilder msg = new StringBuilder();
String name = proxyandfactory.getString("name");
String number = proxyandfactory.getString("number");
//营业执照税号
String tqq9_taxno = proxyandfactory.getString("tqq9_taxno");
Date tqq9_taxenddate = proxyandfactory.getDate("tqq9_taxenddate");
int tqq9_yyzzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_taxenddate, currentDate);
proxyandfactory.set("tqq9_yyzzts", tqq9_yyzzts);
if(tqq9_yyzzts <= warnDays){
msg.append("营业执照税号 ").append(tqq9_taxno).append(" ,距离过期时间还剩余 ").append(tqq9_yyzzts).append(" 天。");
}
//医疗器械生产许可证号
String tqq9_prolicense = proxyandfactory.getString("tqq9_prolicense");
Date tqq9_proenddate = proxyandfactory.getDate("tqq9_proenddate");
int tqq9_qxscxkzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_proenddate, currentDate);
proxyandfactory.set("tqq9_qxscxkzts", tqq9_qxscxkzts);
if(tqq9_qxscxkzts <= warnDays){
msg.append("医疗器械生产许可证号 ").append(tqq9_prolicense).append(" ,距离过期时间还剩余 ").append(tqq9_qxscxkzts).append(" 天。");
}
//医疗器械经营许可证号
String tqq9_saleno = proxyandfactory.getString("tqq9_saleno");
Date tqq9_saleenddate = proxyandfactory.getDate("tqq9_saleenddate");
int tqq9_qxjyxkzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_saleenddate, currentDate);
proxyandfactory.set("tqq9_qxjyxkzts", tqq9_qxjyxkzts);
if(tqq9_qxjyxkzts <= warnDays){
msg.append("医疗器械经营许可证号 ").append(tqq9_saleno).append(" ,距离过期时间还剩余 ").append(tqq9_qxjyxkzts).append(" 天。");
}
//辐射安全许可证号
String tqq9_safeno = proxyandfactory.getString("tqq9_safeno");
Date tqq9_safeenddate = proxyandfactory.getDate("tqq9_safeenddate");
int tqq9_fsaqxkzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_safeenddate, currentDate);
proxyandfactory.set("tqq9_fsaqxkzts", tqq9_fsaqxkzts);
if(tqq9_fsaqxkzts <= warnDays){
msg.append("辐射安全许可证号 ").append(tqq9_safeno).append(" ,距离过期时间还剩余 ").append(tqq9_fsaqxkzts).append(" 天。");
}
//化妆品许可证号
String tqq9_beautyno = proxyandfactory.getString("tqq9_beautyno");
Date tqq9_beautyenddate = proxyandfactory.getDate("tqq9_beautyenddate");
int tqq9_hzpxkzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_beautyenddate, currentDate);
proxyandfactory.set("tqq9_hzpxkzts", tqq9_hzpxkzts);
if(tqq9_hzpxkzts <= warnDays){
msg.append("化妆品许可证号 ").append(tqq9_beautyno).append(" ,距离过期时间还剩余 ").append(tqq9_hzpxkzts).append(" 天。");
}
//消毒产品生产企业卫生许可证号
DynamicObjectCollection entries = proxyandfactory.getDynamicObjectCollection("tqq9_clnentry");
for (DynamicObject entry : entries) {
String tqq9_clnno = entry.getString("tqq9_clnno");
Date tqq9_clnenddate = entry.getDate("tqq9_clnenddate");
int tqq9_xdpwsxkzts = DateDifferenceCalculator.calculateRemainingDays(tqq9_clnenddate, currentDate);
entry.set("tqq9_xdpwsxkzts", tqq9_xdpwsxkzts);
if(tqq9_xdpwsxkzts <= warnDays){
msg.append("消毒产品生产企业卫生许可证号 ").append(tqq9_clnno).append(" ,距离过期时间还剩余 ").append(tqq9_xdpwsxkzts).append(" 天。");
}
}
if(msg != null && msg.toString().length() > 0){
DynamicObject creator = proxyandfactory.getDynamicObject("creator");
if(creator != null){
String emailAddress = null;
String creatorNumber = creator.getString("number");
if(emailMap.containsKey(creatorNumber)){
emailAddress = emailMap.get(creatorNumber);
}else{
creator = BusinessDataServiceHelper.loadSingle(creator.getPkValue(),
creator.getDynamicObjectType().getName(), "name,email");
emailAddress = creator.getString("email");
}
if(StringUtils.isNotBlank(emailAddress)){
String warnStr = "生产商【编码:"+number+",名称:"+name+"】证照到期提醒:" + msg;
emailMap.put(creatorNumber, emailAddress);
EmailUtils.sendEmail(emailAddress, warnStr, "生产商到期提醒");
}
}
}
}
SaveServiceHelper.save(proxyandfactoryArr);
//采购合同
DynamicObject[] purcontractArr = BusinessDataServiceHelper.load("conm_purcontract",
"id,name,number,creator,biztimeend,tqq9_syyxts",
new QFilter[]{f1, f2});
for (DynamicObject purcontract : purcontractArr) {
String name = purcontract.getString("name");
String number = purcontract.getString("number");
Date biztimeend = purcontract.getDate("biztimeend");
int tqq9_syyxts = DateDifferenceCalculator.calculateRemainingDays(biztimeend, currentDate);
purcontract.set("tqq9_syyxts", tqq9_syyxts);
if(tqq9_syyxts <= warnDays){
DynamicObject creator = purcontract.getDynamicObject("creator");
if(creator != null){
String emailAddress = null;
String creatorNumber = creator.getString("number");
if(emailMap.containsKey(creatorNumber)){
emailAddress = emailMap.get(creatorNumber);
}else{
creator = BusinessDataServiceHelper.loadSingle(creator.getPkValue(),
creator.getDynamicObjectType().getName(), "name,email");
emailAddress = creator.getString("email");
}
if(StringUtils.isNotBlank(emailAddress)){
StringBuilder warnStr = new StringBuilder();
warnStr.append("采购合同【编码:"+number+",名称:"+name+"】证照到期提醒:").append("距离过期时间还剩余 ").append(tqq9_syyxts).append(" 天。");
emailMap.put(creatorNumber, emailAddress);
EmailUtils.sendEmail(emailAddress, warnStr.toString(), "采购合同提醒");
}
}
}
}
SaveServiceHelper.save(purcontractArr);
}
}