采购订单 采购申请单 延期提醒 提前提醒

This commit is contained in:
tzy 2025-09-14 20:03:26 +08:00
parent c09c359e28
commit 0c2b53478d
4 changed files with 305 additions and 4 deletions

View File

@ -26,10 +26,7 @@ import com.ruoyi.common.utils.HttpRequestUtil;
import com.ruoyi.common.utils.WxRobotUtil;
import com.ruoyi.system.domain.SafetyStock;
import com.ruoyi.system.domain.WlStockData;
import com.ruoyi.system.domain.dto.JDInventoryDTO;
import com.ruoyi.system.domain.dto.JDProductionDTO;
import com.ruoyi.system.domain.dto.ProMoDTO;
import com.ruoyi.system.domain.dto.PurchaseOrderDTO;
import com.ruoyi.system.domain.dto.*;
import com.ruoyi.system.domain.vo.SafetyStockVo;
import com.ruoyi.system.domain.vo.WlStockDataVo;
import com.ruoyi.system.mapper.SafetyStockMapper;
@ -834,4 +831,67 @@ public class KingdeeWorkCenterDataController extends BaseController {
return R.ok();
}
@Log(title = "采购订单和采购申请单")
@XxlJob("getMassageDelayDate")
public R<Void> getMassageDelayDate1() {
try {
// String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
String robotId = "483489b2-b219-468c-851f-f56a34a62d91";
List<PurchaseOrderExcelDTO> list = JdUtil.getPurchaseOrder();
List<PurchaseRequestExcelDTO> list2 = JdUtil.getPurchaseRequestOrder();
String currentTime = DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss");
StringBuilder msg = new StringBuilder();
msg.append("🏭 采购订单和采购申请更新\n\n")
.append("更新时间:").append(currentTime).append("\n\n")
.append("🔧 订单数据统计:\n");
// 获取并统计每个工段的数据
for (String workCenter : workCenters) {
try {
R<List<KingdeeWorkCenterDataBo>> result = getKingdeeDelayData(workCenter);
if (R.isError(result) || CollUtil.isEmpty(result.getData())) {
msg.append("- ").append(workCenter).append(" (无数据)\n");
continue;
}
List<KingdeeWorkCenterDataBo> dataList = result.getData();
msg.append("- ").append(workCenter).append(" (共").append(dataList.size()).append("条数据)\n");
// 生成Excel文件
String fileName = String.format("%s生产延期数据_%s.xlsx", workCenter,
DateUtil.format(new Date(), "yyyyMMddHHmmss"));
String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName;
// 使用EasyExcel写入数据
EasyExcel.write(filePath, KingdeeWorkCenterDataVo.class)
.sheet("工段数据")
.doWrite(BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class));
// 发送Excel文件
File excelFile = new File(filePath);
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
// 删除临时文件
FileUtils.deleteQuietly(excelFile);
} catch (Exception e) {
log.error("获取工段{}数据失败", workCenter, e);
msg.append("- ").append(workCenter).append(" (获取失败: ").append(e.getMessage()).append(")\n");
}
}
msg.append("\n详细数据请查看发送的Excel文件");
wxRobotUtil.sendMsgToWeChatGroup(msg.toString(), robotId, true); // @所有人
return R.ok();
} catch (Exception e) {
log.error("发送工段数据失败", e);
return R.fail("发送工段数据失败:" + e.getMessage());
}
}
}

View File

@ -0,0 +1,56 @@
package com.ruoyi.system.domain.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class PurchaseOrderExcelDTO {
/**
* 单据编号
*/
@JsonProperty("FBillNo")
private String FBillNo;
/**
* 采购日期
*/
@JsonProperty("FDate")
private String FDate;
/**
* 供应商名称
*/
@JsonProperty("FSupplierId.FName")
private String FSupplierIdFName;
/**
* 物料编码
*/
@JsonProperty("FMaterialId.FNumber")
private String FMaterialIdFNumber;
/**
* 物料名称
*/
@JsonProperty("FMaterialName")
private String FMaterialName;
/**
* 数量
*/
@JsonProperty("FQty")
private String FQty;
/**
* 交货日期
*/
@JsonProperty("FDeliveryDate")
private String FDeliveryDate;
/**
* 生产令号
*/
@JsonProperty("F_UCHN_Text2")
private String FUCHNText2;
}

View File

@ -0,0 +1,75 @@
package com.ruoyi.system.domain.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class PurchaseRequestExcelDTO {
/**
* 单据编号
*/
@JsonProperty("FBillNo")
private String FBillNo;
/**
* 单据类型
*/
@JsonProperty("FBillTypeID")
private String FBillTypeID;
/**
* 建议采购日期
*/
@JsonProperty("FSuggestPurDate")
private String FSuggestPurDate;
/**
* 建议供应商名称
*/
@JsonProperty("FSuggestSupplierId.FName")
private String FSuggestSupplierId_FName;
/**
* 物料编码
*/
@JsonProperty("FMaterialId.FNumber")
private String FMaterialId_FNumber;
/**
* 物料名称
*/
@JsonProperty("FMaterialName")
private String FMaterialName;
/**
* 计价单位
*/
@JsonProperty("FPriceUnitId.FName")
private String FPriceUnitId_FName;
/**
* 申请数量
*/
@JsonProperty("FReqQty")
private String FReqQty;
/**
* 到货日期
*/
@JsonProperty("FArrivalDate")
private String FArrivalDate;
/**
* 申请日期
*/
@JsonProperty("FApplicationDate")
private String FApplicationDate;
/**
* 生产令号
*/
@JsonProperty("F_UCHN_Text")
private String FUCHNText;
}

View File

@ -2518,4 +2518,114 @@ public class JdUtil {
}
public static List<PurchaseOrderExcelDTO> getPurchaseOrder() {
K3CloudApi client = new K3CloudApi();
// 请求参数要求为json字符串
JsonObject json = new JsonObject();
json.addProperty("FormId", "PUR_PurchaseOrder");
json.addProperty("FieldKeys", "FBillNo,FDate,FSupplierId.FName,FMaterialId.FNumber,FMaterialName,FQty,FDeliveryDate,F_UCHN_Text2");
// 创建过滤条件
JsonObject filterObject = new JsonObject();
JsonArray filterString = new JsonArray();
filterObject.addProperty("FieldName", "FCloseStatus");
filterObject.addProperty("Compare", "67");
filterObject.addProperty("Value", 105);
filterObject.addProperty("Left", "");
filterObject.addProperty("Right", "");
filterObject.addProperty("Logic", 0);
filterString.add(filterObject);
JsonObject filterObject1 = new JsonObject();
filterObject1.addProperty("FieldName", "FMRPCloseStatus");
filterObject1.addProperty("Compare", "67");
filterObject1.addProperty("Value", 105);
filterObject1.addProperty("Left", "");
filterObject1.addProperty("Right", "");
filterObject1.addProperty("Logic", 0);
filterString.add(filterObject1);
JsonObject filterObject2 = new JsonObject();
filterObject2.addProperty("FieldName", "FDocumentStatus");
filterObject2.addProperty("Compare", "67");
filterObject2.addProperty("Value", 105);
filterObject2.addProperty("Left", "");
filterObject2.addProperty("Right", "");
filterObject2.addProperty("Logic", 0);
filterString.add(filterObject2);
json.add("FilterString", filterString);
json.addProperty("OrderString", "");
json.addProperty("TopRowCount", 0);
json.addProperty("StartRow", 0);
json.addProperty("Limit", 10000);
json.addProperty("SubSystemId", "");
String jsonData = json.toString();
List<PurchaseOrderExcelDTO> purcs = null;
try {
// 调用接口
String resultJson = String.valueOf(client.billQuery(jsonData));
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
// 使用 ObjectMapper JsonArray 转换为 List<PlannedProcessVo>
ObjectMapper objectMapper = new ObjectMapper();
purcs = objectMapper.readValue(jsonArray.toString(),
new TypeReference<List<PurchaseOrderExcelDTO>>() {
});
} catch (Exception e) {
e.printStackTrace(); // 输出异常日志
}
return purcs; // 返回结果
}
public static List<PurchaseRequestExcelDTO> getPurchaseRequestOrder() {
K3CloudApi client = new K3CloudApi();
// 请求参数要求为json字符串
JsonObject json = new JsonObject();
json.addProperty("FormId", "PUR_Requisition");
json.addProperty("FieldKeys", "FBillNo,FBillTypeID,FSuggestPurDate,FSuggestSupplierId.FName,FMaterialId.FNumber,FMaterialName,FPriceUnitId.FName,FReqQty,FArrivalDate,FApplicationDate,F_UCHN_Text");
// 创建过滤条件
JsonObject filterObject = new JsonObject();
JsonArray filterString = new JsonArray();
filterObject.addProperty("FieldName", "FDocumentStatus");
filterObject.addProperty("Compare", "67");
filterObject.addProperty("Value", 105);
filterObject.addProperty("Left", "");
filterObject.addProperty("Right", "");
filterObject.addProperty("Logic", 0);
filterString.add(filterObject);
JsonObject filterObject1 = new JsonObject();
filterObject1.addProperty("FieldName", "FCloseStatus");
filterObject1.addProperty("Compare", "67");
filterObject1.addProperty("Value", 105);
filterObject1.addProperty("Left", "");
filterObject1.addProperty("Right", "");
filterObject1.addProperty("Logic", 0);
filterString.add(filterObject1);
json.add("FilterString", filterString);
json.addProperty("OrderString", "");
json.addProperty("TopRowCount", 0);
json.addProperty("StartRow", 0);
json.addProperty("Limit", 10000);
json.addProperty("SubSystemId", "");
String jsonData = json.toString();
List<PurchaseRequestExcelDTO> purchaseRequestExcelDTOList = null;
try {
// 调用接口
String resultJson = String.valueOf(client.billQuery(jsonData));
JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class);
// 使用 ObjectMapper JsonArray 转换为 List<PlannedProcessVo>
ObjectMapper objectMapper = new ObjectMapper();
purchaseRequestExcelDTOList = objectMapper.readValue(jsonArray.toString(),
new TypeReference<List<PurchaseRequestExcelDTO>>() {
});
} catch (Exception e) {
e.printStackTrace(); // 输出异常日志
}
return purchaseRequestExcelDTOList; // 返回结果
}
}