parent
b8bcdb5249
commit
23221d1cf1
|
@ -2,20 +2,32 @@ package zcgj.zcdev.zcdev.pr.plugin.form;
|
|||
|
||||
import com.greenpineyu.fel.common.NumberUtil;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.ListSelectedRow;
|
||||
import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.form.control.events.BeforeItemClickEvent;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||
import kd.bos.form.operate.FormOperate;
|
||||
import kd.bos.list.plugin.AbstractListPlugin;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.fi.gl.util.DateUtil;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.YearMonth;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.Date;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
@ -32,7 +44,7 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
|
|||
public void itemClick(ItemClickEvent evt) {
|
||||
super.itemClick(evt);
|
||||
String itemKey = evt.getItemKey();
|
||||
if (itemKey.equals("zcgj_idle")){
|
||||
if (itemKey.equals("zcgj_idle")){//闲置
|
||||
Set<Long> setIds = getSelectOrderIds(this.getSelectedRows());
|
||||
DynamicObject[] equipments = BusinessDataServiceHelper.load("eceq_equipment_card", "billno,billname,equipstatus", new QFilter[]{new QFilter("id", "in", setIds)});
|
||||
for (DynamicObject equipment : equipments) {
|
||||
|
@ -41,6 +53,108 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
|
|||
Object[] save = SaveServiceHelper.save(equipments);
|
||||
System.out.println();
|
||||
this.getView().showMessage("闲置成功!");
|
||||
} else if (itemKey.equals("zcgj_asset")) {//同步资产卡片
|
||||
QFilter qFilter = new QFilter("assetcat.number", QCP.in, "100104,100113,100105,100109,100112");
|
||||
DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_card_real", "number,assetname,model,realaccountdate,assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor", new QFilter[]{qFilter});
|
||||
for (DynamicObject realcard : realcards) {
|
||||
String number = realcard.getString("number");//资产编码
|
||||
String assetname = realcard.getString("assetname");//资产名称
|
||||
String model = realcard.getString("model");//规格型号
|
||||
Date realaccountdate = realcard.getDate("realaccountdate");//启用日期
|
||||
DynamicObject assetunit = realcard.getDynamicObject("assetunit");//资产组织
|
||||
DynamicObject supplier = realcard.getDynamicObject("supplier");//供应商
|
||||
String platenumber = realcard.getString("zcgj_platenumber");//车牌号
|
||||
DynamicObject unit = realcard.getDynamicObject("unit");//计量单位
|
||||
String manufacturer = realcard.getString("zcgj_manufacturer");//生产厂家
|
||||
Date prodate = realcard.getDate("zcgj_prodate");//出场日期
|
||||
DynamicObject storeplace = realcard.getDynamicObject("storeplace");//存放地点
|
||||
DynamicObject storeplaceinfo = BusinessDataServiceHelper.loadSingle("fa_storeplace", new QFilter[]{new QFilter("id", QCP.equals, storeplace.getLong("id"))});
|
||||
String fulladdress = storeplaceinfo.getString("fulladdress");
|
||||
DynamicObject creator = realcard.getDynamicObject("creator");//创建人
|
||||
Date createtime = realcard.getDate("createtime");//创建时间
|
||||
DynamicObject modifier = realcard.getDynamicObject("modifier");//修改人
|
||||
Date modifytime = realcard.getDate("modifytime");//修改时间
|
||||
DynamicObject auditor = realcard.getDynamicObject("auditor");//审核人
|
||||
Date auditdate = realcard.getDate("auditdate");//审核时间
|
||||
|
||||
DynamicObject equipmentcard = ORM.create().newDynamicObject("eceq_equipment_card");
|
||||
Date date=new Date();
|
||||
long timestamp=date.getTime(); //时间戳
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式
|
||||
String timeText=format.format(timestamp);
|
||||
DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("number", QCP.equals, number)});
|
||||
if (eceq_equipment_card!=null){
|
||||
equipmentcard.set("id",eceq_equipment_card.getLong("id"));
|
||||
}
|
||||
equipmentcard.set("billno",timeText);//单据编号
|
||||
equipmentcard.set("status","C");//单据状态
|
||||
equipmentcard.set("billstatus","C");//
|
||||
equipmentcard.set("enable","1");//可用
|
||||
equipmentcard.set("property","OWN");//设备性质
|
||||
equipmentcard.set("number",number);//设备编号
|
||||
equipmentcard.set("name",assetname);//设备名称
|
||||
equipmentcard.set("modelnum",model);//规格型号
|
||||
equipmentcard.set("indate",realaccountdate);//入库日期
|
||||
equipmentcard.set("org",assetunit);//管理组织
|
||||
equipmentcard.set("equipstatus","FREE");//设备状态
|
||||
equipmentcard.set("project",null);//工程项目
|
||||
equipmentcard.set("useorg",null);//使用组织
|
||||
equipmentcard.set("supplier",supplier);//供应商
|
||||
equipmentcard.set("carnumber",platenumber);//车牌号
|
||||
equipmentcard.set("enginenumber",null);//发动机编号
|
||||
equipmentcard.set("framenumber",null);//车架号码
|
||||
equipmentcard.set("unit",unit);//设备单位
|
||||
equipmentcard.set("power",null);//功率
|
||||
equipmentcard.set("manufacturer",manufacturer);//生产厂家
|
||||
equipmentcard.set("proddate",prodate);//出场日期
|
||||
equipmentcard.set("storageplace",fulladdress);//存放地点
|
||||
equipmentcard.set("creator",creator);//创建人
|
||||
equipmentcard.set("createtime",createtime);//创建日期
|
||||
equipmentcard.set("modifier",modifier);//修改人
|
||||
equipmentcard.set("modifytime",modifytime);//修改日期
|
||||
equipmentcard.set("auditor",auditor);//审核人
|
||||
equipmentcard.set("auditdate",auditdate);//审核日期
|
||||
if (eceq_equipment_card!=null){
|
||||
SaveServiceHelper.update(equipmentcard);
|
||||
System.out.println();
|
||||
}else {
|
||||
OperationResult result = OperationServiceHelper.executeOperate("save", "eceq_equipment_card", new DynamicObject[]{equipmentcard}, null);
|
||||
System.out.println();
|
||||
}
|
||||
DynamicObject eceq_equipment= BusinessDataServiceHelper.loadSingle("eceq_equipinfo", new QFilter[]{new QFilter("number", QCP.equals, number)});
|
||||
if(eceq_equipment!=null){
|
||||
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM"); //设置格式
|
||||
String ym =sd.format(date);
|
||||
DynamicObjectCollection entrys = eceq_equipment.getDynamicObjectCollection("zcgj_entryentity");
|
||||
QFilter qf = new QFilter("realcard.number", QCP.in, number);
|
||||
if (entrys.size()>0){//若分录行数大于0 则取上月的
|
||||
qf.and(new QFilter("billno", QCP.in, ym));
|
||||
for (int i = 0; i < entrys.size(); i++) {
|
||||
DynamicObject entry = entrys.get(i);
|
||||
String zcgjDebillno = entry.getString("zcgj_debillno");
|
||||
entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入
|
||||
}
|
||||
}
|
||||
DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf});
|
||||
for (DynamicObject depresplitdetail : depresplitdetails) {
|
||||
String billno = depresplitdetail.getString("billno");
|
||||
DynamicObject period = depresplitdetail.getDynamicObject("period");//折旧区间
|
||||
DynamicObject splitdept = depresplitdetail.getDynamicObject("splitdept");//使用部门
|
||||
DynamicObjectCollection assentry = depresplitdetail.getDynamicObjectCollection("assentry");
|
||||
DynamicObject costcentrer = assentry.get(0).getDynamicObject("costcentrer");//成本中心
|
||||
BigDecimal splitamount = assentry.get(0).getBigDecimal("splitamount");//分摊金额
|
||||
DynamicObject addNew = entrys.addNew();
|
||||
addNew.set("zcgj_debillno",billno);
|
||||
addNew.set("zcgj_assperiod",period);
|
||||
addNew.set("zcgj_headusedept",splitdept);
|
||||
addNew.set("zcgj_entrybillno",number);
|
||||
addNew.set("zcgj_entryname",assetname);
|
||||
addNew.set("zcgj_costcenter",costcentrer);
|
||||
addNew.set("zcgj_shareamount",splitamount);
|
||||
}
|
||||
SaveServiceHelper.update(eceq_equipment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,4 +207,31 @@ public class EquipmentCardListPlugin extends AbstractListPlugin implements Plugi
|
|||
}
|
||||
return setIds;
|
||||
}
|
||||
|
||||
public static boolean isLastMonth(String dateStr) {
|
||||
// 定义日期格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
try {
|
||||
// 解析输入的日期字符串
|
||||
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
|
||||
|
||||
// 获取当前日期
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 计算上个月的年份和月份
|
||||
YearMonth lastMonth = YearMonth.from(now.minusMonths(1));
|
||||
|
||||
// 获取上个月的第一天和最后一天
|
||||
LocalDateTime firstDay = lastMonth.atDay(1).atStartOfDay();
|
||||
LocalDateTime lastDay = lastMonth.atEndOfMonth().atTime(23, 59, 59);
|
||||
|
||||
// 判断输入日期是否在上个月范围内
|
||||
return !dateTime.isBefore(firstDay) && !dateTime.isAfter(lastDay);
|
||||
} catch (DateTimeParseException e) {
|
||||
// 处理日期格式错误
|
||||
System.err.println("日期格式错误: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,160 @@
|
|||
package zcgj.zcdev.zcdev.pr.task;
|
||||
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.exception.KDException;
|
||||
import kd.bos.orm.ORM;
|
||||
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.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.YearMonth;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 实物卡片同步设备定时任务
|
||||
*/
|
||||
public class EquipmentCardTaskPlugin extends AbstractTask {
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {//同步资产卡片
|
||||
QFilter qFilter = new QFilter("assetcat.number", QCP.in, "100104,100113,100105,100109,100112");
|
||||
DynamicObject[] realcards = BusinessDataServiceHelper.load("fa_card_real", "number,assetname,model,realaccountdate,assetunit,supplier,zcgj_platenumber,unit,zcgj_manufacturer,zcgj_prodate,storeplace,creator,createtime,modifier,modifytime,auditdate,auditor", new QFilter[]{qFilter});
|
||||
for (DynamicObject realcard : realcards) {
|
||||
String number = realcard.getString("number");//资产编码
|
||||
String assetname = realcard.getString("assetname");//资产名称
|
||||
String model = realcard.getString("model");//规格型号
|
||||
Date realaccountdate = realcard.getDate("realaccountdate");//启用日期
|
||||
DynamicObject assetunit = realcard.getDynamicObject("assetunit");//资产组织
|
||||
DynamicObject supplier = realcard.getDynamicObject("supplier");//供应商
|
||||
String platenumber = realcard.getString("zcgj_platenumber");//车牌号
|
||||
DynamicObject unit = realcard.getDynamicObject("unit");//计量单位
|
||||
String manufacturer = realcard.getString("zcgj_manufacturer");//生产厂家
|
||||
Date prodate = realcard.getDate("zcgj_prodate");//出场日期
|
||||
DynamicObject storeplace = realcard.getDynamicObject("storeplace");//存放地点
|
||||
DynamicObject storeplaceinfo = BusinessDataServiceHelper.loadSingle("fa_storeplace", new QFilter[]{new QFilter("id", QCP.equals, storeplace.getLong("id"))});
|
||||
String fulladdress = storeplaceinfo.getString("fulladdress");
|
||||
DynamicObject creator = realcard.getDynamicObject("creator");//创建人
|
||||
Date createtime = realcard.getDate("createtime");//创建时间
|
||||
DynamicObject modifier = realcard.getDynamicObject("modifier");//修改人
|
||||
Date modifytime = realcard.getDate("modifytime");//修改时间
|
||||
DynamicObject auditor = realcard.getDynamicObject("auditor");//审核人
|
||||
Date auditdate = realcard.getDate("auditdate");//审核时间
|
||||
|
||||
DynamicObject equipmentcard = ORM.create().newDynamicObject("eceq_equipment_card");
|
||||
Date date=new Date();
|
||||
long timestamp=date.getTime(); //时间戳
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置格式
|
||||
String timeText=format.format(timestamp);
|
||||
DynamicObject eceq_equipment_card = BusinessDataServiceHelper.loadSingle("eceq_equipment_card", new QFilter[]{new QFilter("number", QCP.equals, number)});
|
||||
if (eceq_equipment_card!=null){
|
||||
equipmentcard.set("id",eceq_equipment_card.getLong("id"));
|
||||
}
|
||||
equipmentcard.set("billno",timeText);//单据编号
|
||||
equipmentcard.set("status","C");//单据状态
|
||||
equipmentcard.set("billstatus","C");//
|
||||
equipmentcard.set("enable","1");//可用
|
||||
equipmentcard.set("property","OWN");//设备性质
|
||||
equipmentcard.set("number",number);//设备编号
|
||||
equipmentcard.set("name",assetname);//设备名称
|
||||
equipmentcard.set("modelnum",model);//规格型号
|
||||
equipmentcard.set("indate",realaccountdate);//入库日期
|
||||
equipmentcard.set("org",assetunit);//管理组织
|
||||
equipmentcard.set("equipstatus","FREE");//设备状态
|
||||
equipmentcard.set("project",null);//工程项目
|
||||
equipmentcard.set("useorg",null);//使用组织
|
||||
equipmentcard.set("supplier",supplier);//供应商
|
||||
equipmentcard.set("carnumber",platenumber);//车牌号
|
||||
equipmentcard.set("enginenumber",null);//发动机编号
|
||||
equipmentcard.set("framenumber",null);//车架号码
|
||||
equipmentcard.set("unit",unit);//设备单位
|
||||
equipmentcard.set("power",null);//功率
|
||||
equipmentcard.set("manufacturer",manufacturer);//生产厂家
|
||||
equipmentcard.set("proddate",prodate);//出场日期
|
||||
equipmentcard.set("storageplace",fulladdress);//存放地点
|
||||
equipmentcard.set("creator",creator);//创建人
|
||||
equipmentcard.set("createtime",createtime);//创建日期
|
||||
equipmentcard.set("modifier",modifier);//修改人
|
||||
equipmentcard.set("modifytime",modifytime);//修改日期
|
||||
equipmentcard.set("auditor",auditor);//审核人
|
||||
equipmentcard.set("auditdate",auditdate);//审核日期
|
||||
if (eceq_equipment_card!=null){
|
||||
SaveServiceHelper.update(equipmentcard);
|
||||
System.out.println();
|
||||
}else {
|
||||
OperationResult result = OperationServiceHelper.executeOperate("save", "eceq_equipment_card", new DynamicObject[]{equipmentcard}, null);
|
||||
System.out.println();
|
||||
}
|
||||
DynamicObject eceq_equipment= BusinessDataServiceHelper.loadSingle("eceq_equipinfo", new QFilter[]{new QFilter("number", QCP.equals, number)});
|
||||
if(eceq_equipment!=null){
|
||||
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM"); //设置格式
|
||||
String ym =sd.format(date);
|
||||
DynamicObjectCollection entrys = eceq_equipment.getDynamicObjectCollection("zcgj_entryentity");
|
||||
QFilter qf = new QFilter("realcard.number", QCP.in, number);
|
||||
if (entrys.size()>0){//若分录行数大于0 则取上月的
|
||||
qf.and(new QFilter("billno", QCP.in, ym));
|
||||
for (int i = 0; i < entrys.size(); i++) {
|
||||
DynamicObject entry = entrys.get(i);
|
||||
String zcgjDebillno = entry.getString("zcgj_debillno");
|
||||
entrys.removeIf(record -> isLastMonth(zcgjDebillno));//若属于上个月那就删除重新塞入
|
||||
}
|
||||
}
|
||||
DynamicObject[] depresplitdetails = BusinessDataServiceHelper.load("fa_depresplitdetail", "billno,period,splitdept,assentry.costcentrer,assentry.splitamount", new QFilter[]{qf});
|
||||
for (DynamicObject depresplitdetail : depresplitdetails) {
|
||||
String billno = depresplitdetail.getString("billno");
|
||||
DynamicObject period = depresplitdetail.getDynamicObject("period");//折旧区间
|
||||
DynamicObject splitdept = depresplitdetail.getDynamicObject("splitdept");//使用部门
|
||||
DynamicObjectCollection assentry = depresplitdetail.getDynamicObjectCollection("assentry");
|
||||
DynamicObject costcentrer = assentry.get(0).getDynamicObject("costcentrer");//成本中心
|
||||
BigDecimal splitamount = assentry.get(0).getBigDecimal("splitamount");//分摊金额
|
||||
DynamicObject addNew = entrys.addNew();
|
||||
addNew.set("zcgj_debillno",billno);
|
||||
addNew.set("zcgj_assperiod",period);
|
||||
addNew.set("zcgj_headusedept",splitdept);
|
||||
addNew.set("zcgj_entrybillno",number);
|
||||
addNew.set("zcgj_entryname",assetname);
|
||||
addNew.set("zcgj_costcenter",costcentrer);
|
||||
addNew.set("zcgj_shareamount",splitamount);
|
||||
}
|
||||
SaveServiceHelper.update(eceq_equipment);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isLastMonth(String dateStr) {
|
||||
// 定义日期格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
try {
|
||||
// 解析输入的日期字符串
|
||||
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
|
||||
|
||||
// 获取当前日期
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 计算上个月的年份和月份
|
||||
YearMonth lastMonth = YearMonth.from(now.minusMonths(1));
|
||||
|
||||
// 获取上个月的第一天和最后一天
|
||||
LocalDateTime firstDay = lastMonth.atDay(1).atStartOfDay();
|
||||
LocalDateTime lastDay = lastMonth.atEndOfMonth().atTime(23, 59, 59);
|
||||
|
||||
// 判断输入日期是否在上个月范围内
|
||||
return !dateTime.isBefore(firstDay) && !dateTime.isAfter(lastDay);
|
||||
} catch (DateTimeParseException e) {
|
||||
// 处理日期格式错误
|
||||
System.err.println("日期格式错误: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue