package com.malk.huagao.service.impl;
import com.malk.huagao.entity.KdYdCustomer;
import com.malk.huagao.entity.KdYdMaterial;
import com.malk.huagao.mapper.KdYdMaterialMapper;
import com.malk.huagao.service.IKdYdMaterialService;
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 org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author LQY
* @since 2025-10-16
*/
@Service
public class KdYdMaterialServiceImpl extends ServiceImpl implements IKdYdMaterialService {
@Autowired
private YDClient ydClient;
@Autowired
private KdYdMaterialMapper kdYdMaterialMapper;
@Override
public void insertkdYdMaterial(Map map) {
MDC.put("MDC_KEY_PID", "1003");
String formInstId = UtilMap.getString(map, "formInstId");
DDR_New ddrNew = ydClient.queryData(YDParam.builder()
.formInstId(formInstId)
.build(), YDConf.FORM_QUERY.retrieve_id);
Map formData = ddrNew.getFormData();
System.out.println(formData);
String wlmc = UtilMap.getString(formData, "textField_l43jpnsf");
String xh = UtilMap.getString(formData, "textField_l43jpnsg");
String gg = UtilMap.getString(formData, "textField_lqbxkzbq");
String wlfz = UtilMap.getString(formData, "selectField_mguazu3k");
String wlsx = UtilMap.getString(formData, "textField_l43jpnsh");
String xsy = UtilMap.getString(formData, "employeeField_mgu5vocz").replace("[\"", "").replace("\"]", "").trim();
String ssxl = UtilMap.getString(formData, "textField_mfxbtcdp");
String jx = UtilMap.getString(formData, "textField_mejl9nrs");
int sd = parseInt(safeGetString(formData, "numberField_mfxbtceb"), 0);
String mrsl = UtilMap.getString(formData, "textField_mfxbtcdq");
String chlb = UtilMap.getString(formData, "textField_mfxbtcdr");
String jbdw = UtilMap.getString(formData, "textField_mfxbtcdo");
BigDecimal xsjzj = toBigDecimal(safeGetString(formData, "numberField_mejl9nsc"));
String smzs = UtilMap.getString(formData, "textField_mfxbtce4");
String sjzt = UtilMap.getString(formData, "textField_mfxbtce6");
String jyzt = UtilMap.getString(formData, "textField_mfxbtcea");
String dzl = UtilMap.getString(formData, "textField_mfxbtcea");
String pzzt = UtilMap.getString(formData, "selectField_mejl9nrq");
String wlbt = wlmc+"-"+xh;
// String sdmc = ssxl+"-"+pzzt+"-"+safeGetString(formData, "numberField_mfxbtceb");
KdYdMaterial kdYdMaterial = new KdYdMaterial();
kdYdMaterial.setWlmc(wlmc);
kdYdMaterial.setXh(xh);
kdYdMaterial.setGg(gg);
kdYdMaterial.setWlfz(wlfz);
kdYdMaterial.setWlsx(wlsx);
kdYdMaterial.setJbdw(jbdw);
kdYdMaterial.setSsxl(ssxl);
kdYdMaterial.setJx(jx);
kdYdMaterial.setSd(sd);
kdYdMaterial.setMrsl(mrsl);
kdYdMaterial.setChlb(chlb);
kdYdMaterial.setXsy(xsy);
kdYdMaterial.setXsjzj(xsjzj);
kdYdMaterial.setSmzs(smzs);
kdYdMaterial.setSjzt(sjzt);
kdYdMaterial.setJyzt(jyzt);
kdYdMaterial.setDzl(dzl);
kdYdMaterial.setPzzt(pzzt);
kdYdMaterial.setMaterialtitle(wlbt);
// kdYdMaterial.setSpeedname(sdmc);
kdYdMaterial.setForminstid(formInstId);
kdYdMaterialMapper.insert(kdYdMaterial);
}
private static int parseInt(String str, int defaultValue) {
if (str == null || str.trim().isEmpty()) {
return defaultValue;
}
try {
return Integer.parseInt(str.trim());
} catch (NumberFormatException e) {
return defaultValue;
}
}
private String safeGetString(Map formData, String key) {
Object val = formData.get(key);
return val == null ? "" : String.valueOf(val);
}
public static BigDecimal toBigDecimal(String str) {
if (str == null || str.trim().isEmpty()) {
return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
}
try {
return new BigDecimal(str.trim())
.setScale(2, RoundingMode.HALF_UP);
} catch (NumberFormatException e) {
// 返回默认值而不是抛出异常,避免程序中断
return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
}
}
/**
* 重载方法,支持Number类型输入
*/
public static BigDecimal toBigDecimal(Number number) {
if (number == null) {
return BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
}
return new BigDecimal(number.toString())
.setScale(2, RoundingMode.HALF_UP);
}
}