Merge remote-tracking branch 'orinin/test' into dev-ljw

This commit is contained in:
ljw 2024-08-27 14:40:23 +08:00
commit 12c316893e
4 changed files with 195 additions and 7 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@
*.idea/
out/
!/src/main/java/kd/cosmic/

View File

@ -2,16 +2,20 @@ package com.yem.or.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.yem.em.utils.SubRelationUtils;
import com.yem.or.utils.OrderUtils;
import com.yem.rf.utils.RFUtils;
import com.yem.wm.utils.DynamicObjectUtil;
import com.yem.wm.utils.RptUtil;
import com.yem.wm.utils.YEM;
import com.yem.wm.utils.groupfunc.GroupTopOneFunction;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.algo.sql.tree.OrderBy;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.OrmLocaleValue;
import kd.bos.openapi.common.custom.annotation.ApiController;
import kd.bos.openapi.common.custom.annotation.ApiParam;
import kd.bos.openapi.common.custom.annotation.ApiPostMapping;
@ -23,6 +27,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import org.jetbrains.annotations.NotNull;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
@ -533,8 +538,8 @@ public class AssepcDynamic {
@ApiPostMapping("/assepcdynamic/colorlibrary")
public CustomApiResult<Object> colorlibrary(@NotNull @ApiParam("产品类型") String modnumber,
@NotNull @ApiParam("物料编码") String material,
@NotNull @ApiParam("页码") int page,
@NotNull @ApiParam("每一页个数") int number) {
@ApiParam("页码") int page,
@ApiParam("每一页个数") int number) {
material = material.trim();
JSONArray jsonArray = new JSONArray();
QFilter qFilter = new QFilter("yem_productclass.number", QCP.equals, modnumber + "PJ");
@ -629,4 +634,140 @@ public class AssepcDynamic {
}
}
}
/**
* 查询客户购买过的资源
* @param customerNo
* @return
*/
@ApiPostMapping("/assepcdynamic/queassequipment")
public CustomApiResult<Object> queryBayedResourceNo(@NotBlank @ApiParam(value = "客户编码", example = "116021200012") String customerNo) {
String algoKey = this.getClass().getName();
QFilter qFilter = new QFilter("status", "=", "C");
qFilter.and("yem_customer.number", "=", customerNo);
qFilter.and("yem_model", "is not null", null);
ArrayList<String> list = Lists.newArrayList();
list.add("yem_model");
list.add("yem_customer");
list.add("number");
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_em_devicefiles", String.join(",", list), qFilter.toArray());
HashSet<String> set = Sets.newHashSet();
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet);
Set<Long> ids = new HashSet<>();
for (DynamicObject dynamicObject : collection) {
Long model = dynamicObject.getLong("yem_model");
ids.add(model);
}
DataSet basemodelib = ORM.create().queryDataSet(algoKey, "yem_bd_basemodelib", "number", new QFilter[]{new QFilter("id", "in", ids)});
DynamicObjectCollection libs = ORM.create().toPlainDynamicObjectCollection(basemodelib);
for (DynamicObject lib : libs) {
set.add(lib.getString("number"));
}
ArrayList<String> ass = Lists.newArrayList();
ass.add("number");//电子目录编码
ass.add("name");//电子目录名称
ass.add("yem_eqctype.number");//产品类型.编码
ass.add("yem_eqctype.name");//产品类型.名称
ass.add("yem_eqctype.longnumber");//产品类型.长编码
ass.add("yem_eqctype.fullname");//产品类型.长名称
ass.add("yem_brandmodel.number");//品牌车型.编码
ass.add("yem_brandmodel.name");//品牌车型.名称
ass.add("yem_brandmodel.longnumber");//品牌车型.长编码
ass.add("yem_brandmodel.fullname");//品牌车型.长名称
ass.add("yem_eqctype.yem_enname");//产品类型.英文名称
QFilter assFilter = new QFilter("status", "=", "C");
assFilter.and("number", "in", set);
DataSet assDataSet = ORM.create().queryDataSet(algoKey, "yem_em_assequipment", String.join(",", ass), assFilter.toArray());
DynamicObjectCollection assColl = ORM.create().toPlainDynamicObjectCollection(assDataSet);
HashMap<String, Object> map = Maps.newHashMap();
ArrayList<Map<String, String>> rows = Lists.newArrayList();
for (DynamicObject dynamicObject : assColl) {
Map<String, String> row = Maps.newHashMap();
row.put("number", dynamicObject.getString("number"));//电子目录编码
row.put("name", dynamicObject.getString("name"));//电子目录名称
row.put("yem_eqctype_number", dynamicObject.getString("yem_eqctype.number"));//产品类型.编码
row.put("yem_eqctype_name", dynamicObject.getString("yem_eqctype.name"));//产品类型.名称
row.put("yem_eqctype_longnumber", dynamicObject.getString("yem_eqctype.longnumber"));//产品类型.长编码
row.put("yem_eqctype_fullname", dynamicObject.getString("yem_eqctype.fullname"));//产品类型.长名称
row.put("yem_brandmodel_number", dynamicObject.getString("yem_brandmodel.number"));//品牌车型.编码
row.put("yem_brandmodel_name", dynamicObject.getString("yem_brandmodel.name"));//品牌车型.名称
row.put("yem_brandmodel_longnumber", dynamicObject.getString("yem_brandmodel.longnumber"));//品牌车型.长编码
row.put("yem_brandmodel_fullname", dynamicObject.getString("yem_brandmodel.fullname"));//品牌车型.长名称
row.put("yem_eqctype_yem_enname", dynamicObject.getString("yem_eqctype.yem_enname"));//产品类型.英文名称
rows.add(row);
}
HashMap<Object, Object> rowMap = Maps.newHashMap();
rowMap.put("rows", rows);
return CustomApiResult.success(rowMap);
}
@ApiPostMapping("/assepcdynamic/page/pricelib")
public CustomApiResult<Object> queryPriceLibPage(@ApiParam("产品机型") String type, @ApiParam("每页个数") int pageSize, @ApiParam("页码") int pageNum) {
String algoKey = this.getClass().getName();
HashMap<Object, Object> resMap = Maps.newHashMap();
QFilter qFilter = RFUtils.getBaseQFilter();
qFilter.and("yem_productclass.number", QCP.equals, type + "PJ");
ArrayList<String> selectfields = Lists.newArrayList();
selectfields.add("id");
selectfields.add("yem_bizdate");
selectfields.add("yem_bd_products.id products_id");
selectfields.add("yem_accessory entry_id");
selectfields.add("yem_accessory.yem_material.id yem_material_id");
selectfields.add("yem_accessory.yem_material.number yem_material_number");
selectfields.add("yem_accessory.yem_material.name yem_material_name");
selectfields.add("yem_accessory.yem_materialename yem_material_ename");
selectfields.add("yem_accessory.yem_material.modelnum yem_material_modelnum");
selectfields.add("yem_accessory.yem_standsalesprice price");
DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_pricelibrary", String.join(",", selectfields), qFilter.toArray());
DataSet origin = dataSet.copy();
dataSet = dataSet.orderBy(new String[]{"yem_bizdate DESC"})
.groupBy(new String[]{"yem_material_id"})
.agg(new GroupTopOneFunction(), "entry_id", "entry_id")
.finish();
dataSet = dataSet.select("entry_id ordered_entry_id");
dataSet = dataSet.leftJoin(origin)
.on("ordered_entry_id", "entry_id")
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(origin))
.finish();
dataSet = dataSet.orderBy(new String[]{"yem_bizdate DESC"});
ArrayList<Object> rows = Lists.newArrayList();
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
resMap.put("total", collection.size());
dataSet.close();
if (pageSize > collection.size()) {
pageSize = collection.size();
}
for (DynamicObject dynamicObject : collection) {
HashMap<String, Object> map = Maps.newHashMap();
map.put("yem_bizdate", dynamicObject.get("yem_bizdate"));
map.put("yem_material_id", dynamicObject.get("yem_material_id"));
map.put("yem_material_number", dynamicObject.get("yem_material_number"));
map.put("yem_material_name", dynamicObject.get("yem_material_name"));
map.put("yem_material_ename", dynamicObject.get("yem_material_ename"));
map.put("yem_material_modelnum", dynamicObject.get("yem_material_modelnum"));
map.put("price", dynamicObject.get("price"));
rows.add(map);
}
resMap.put("rows", getPageData(rows, pageSize, pageNum));
int totalPage = (int) Math.ceil((double) rows.size() / pageSize);
if (pageNum > totalPage) {
pageNum = totalPage;
}
resMap.put("pageSize", pageSize);
resMap.put("pageNum", pageNum);
resMap.put("isLastPage", pageNum == totalPage);
return CustomApiResult.success(resMap);
}
public static List<Object> getPageData(List<Object> rows, int pageSize, int pageNum) {
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, rows.size());
return rows.subList(startIndex, endIndex);
}
}

View File

@ -47,7 +47,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn {
DynamicObject[] entities = e.getDataEntities();
// Word中的书签名称
final String bookmark = "ensign";
final String BOOKMARK = "ensign";
// 修改Word后上传的附件面板
final String UPLOAD_ATTACHMENT_KEY = "yem_approval";
@ -113,7 +113,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn {
// 获取书签
List<CTBookmark> bookMarks = ContactSignUtils.getFileBookMarks(validatorStream);
validatorSignAble(bookMarks, bookmark, filename);
validatorSignAble(bookMarks, BOOKMARK, filename);
File file;
try {
@ -121,7 +121,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn {
ByteArrayInputStream stream = new ByteArrayInputStream(imageData);
// 书签位置替换为图片书签不会删除
file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, bookmark);
file = ContactSignUtils.replaceBookmarkWithImage(in, stream, filename, BOOKMARK);
AttachmentUtil.uploadAttachment(appId, formId, String.valueOf(pkId), UPLOAD_ATTACHMENT_KEY, file.getName(), file.getPath());
} catch (IOException ex) {
throw new RuntimeException(ex);

View File

@ -1,6 +1,7 @@
package com.yem.wm.task;
import com.yem.wm.utils.DynamicObjectUtil;
import com.yem.wm.utils.YEM;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
@ -86,6 +87,51 @@ public class ServiceRepairTask extends AbstractTask {
}
}
}
updateVoidStatus();
}
/**
* 更新作废状态
*/
private void updateVoidStatus() {
QFilter qFilter = new QFilter("billstatus", QCP.equals, "C");
qFilter.and(new QFilter("yem_ismachine", QCP.equals, true));
DynamicObjectCollection servicerepair_pl = QueryServiceHelper.query("yem_servicerepair", "id,billno,yem_factoryno", new QFilter[]{qFilter}, null);
for (DynamicObject object : servicerepair_pl) {
String factoryno = object.getString("yem_factoryno");
if (YEM.isEmpty(factoryno)) {
continue;
}
//整机档案
DynamicObject getdevicefiles = getdevicefiles(factoryno);
//服务维修单
DynamicObject servicerepair = BusinessDataServiceHelper.loadSingle(object.getString("id"), "yem_servicerepair");
if (YEM.isNotEmpty(servicerepair) && YEM.isNotEmpty(getdevicefiles)) {
//整机档案维修记录
DynamicObjectCollection maintenancerecords = getdevicefiles.getDynamicObjectCollection("yem_maintenancerecords");
//服务维修
DynamicObjectCollection faultypartsreco = servicerepair.getDynamicObjectCollection("yem_faultypartsreco");
for (DynamicObject dynamicObject : faultypartsreco) {
long id = dynamicObject.getLong("id");
String voidstatus = servicerepair.getString("yem_voidstatus");//作废状态
for (DynamicObject maintenancerecord : maintenancerecords) {
long yem_servicerepairenryid = maintenancerecord.getLong("yem_servicerepairenryid");
if (yem_servicerepairenryid == id) {
maintenancerecord.set("yem_voidstatus", voidstatus);
}
}
}
}
OperationServiceHelper.executeOperate("save",
getdevicefiles.getDynamicObjectType().getName(), new DynamicObject[]{getdevicefiles}, OperateOption.create());
}
}
/**