package com.malk.huagao.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.malk.huagao.entity.*;
import com.malk.huagao.mapper.KdYdDeliveryDetailMapper;
import com.malk.huagao.mapper.KdYdDeliveryMapper;
import com.malk.huagao.mapper.KdYdOrderDetailMapper;
import com.malk.huagao.mapper.KdYdOrderMapper;
import com.malk.huagao.service.IKdYdDeliveryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.malk.server.aliwork.YDConf;
import com.malk.server.aliwork.YDParam;
import com.malk.server.dingtalk.DDR_New;
import com.malk.service.aliwork.YDClient;
import com.malk.utils.UtilMap;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringEscapeUtils;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
/**
*
* 服务实现类
*
*
* @author LQY
* @since 2025-10-15
*/
@Service
@Slf4j
public class KdYdDeliveryServiceImpl extends ServiceImpl implements IKdYdDeliveryService {
@Autowired
private YDClient ydClient;
@Autowired
private KdYdDeliveryMapper kdYdDeliveryMapper;
@Autowired
private KdYdDeliveryDetailMapper kdYdDeliveryDetailMapper;
@Value(value = "${kd.host}")
private String kdHost;
@Override
public Map insertDelivery(Map map) {
Map result = new HashMap<>();
try {
MDC.put("MDC_KEY_PID", "1003");
String formInstId = UtilMap.getString(map, "formInstId");
String action = UtilMap.getString(map, "type");
// 处理特殊操作类型
if ("del".equals(action)) {
String bm = UtilMap.getString(map, "bm");
Map headers = new HashMap<>();
headers.put("Content-Type", "application/x-www-form-urlencoded");
Map formParams = new HashMap<>();
Map djbh = new HashMap<>();
djbh.put("djbh", bm);
result.put("data", djbh);
String jsonStr = JSON.toJSONString(result);
formParams.put("jsons", jsonStr);
HttpResponse response = HttpRequest.post(kdHost+"/xk/dyzn/WsBasedyzn.asmx/hgdjydtbdeletefhtzd")
.headerMap(headers, true)
.form(formParams)
.timeout(30000) // 30秒超时
.execute();
String responseBody = response.body();
System.out.println("responseBody===="+responseBody);
// 返回删除操作的格式
result.put("table", "KD_YD_DELIVERY");
result.put("action", "del");
result.put("data", new HashMap() {{
put("bm", bm); // 删除的主键或标识
put("msg", "删除成功");
}});
return result;
}
// 查询表单数据
DDR_New ddrNew = ydClient.queryData(YDParam.builder()
.formInstId(formInstId)
.build(), YDConf.FORM_QUERY.retrieve_id);
Map formData = ddrNew.getFormData();
// 提取主表字段
String djlx = UtilMap.getString(formData, "selectField_mg3fuqvg");
String orderId = UtilMap.getString(formData, "textField_mf6a0h6f");
LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_krbgloam"));
String kh = UtilMap.getString(formData, "textField_mejnamf2");
String jsbb = UtilMap.getString(formData, "selectField_mg3fuqvn");
String djbh = UtilMap.getString(formData, "serialNumberField_mheazm7w");
String xsbm = UtilMap.getString(formData, "textField_krnn5bmr");
String lllx = UtilMap.getString(formData, "selectField_mejowmnc");
String jjr = UtilMap.getString(formData, "textField_mf6a0h5f");
String jjrdh = UtilMap.getString(formData, "textField_mf6a0h5g");
String jjdz = UtilMap.getString(formData, "textareaField_mf6a0h5h");
String xslx = UtilMap.getString(formData, "selectField_mgrn6p2d");
String bzfs = UtilMap.getString(formData, "selectField_mf6a0h5y");
String bz = UtilMap.getString(formData, "textareaField_mejnamfb");
// LocalDateTime hhsj = parseTimestamp(UtilMap.getString(formData, "dateField_mf6a0h67"));
LocalDateTime hhsj = Optional.ofNullable(
parseTimestamp(UtilMap.getString(formData, "dateField_mf6a0h67"))
)
.orElseGet(() -> LocalDateTime.now()
.withHour(17)
.withMinute(0)
.withSecond(0)
.withNano(0));
String ysfs = UtilMap.getString(formData, "selectField_mf6a0h5z");
String hdfs = UtilMap.getString(formData, "selectField_mf6a0h60");
String kdgs = UtilMap.getString(formData, "selectField_mf6a0h61");
String fkfs = UtilMap.getString(formData, "selectField_mf6a0h66");
// 处理明细数据
List