package com.malk.huagao.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.malk.huagao.entity.KdYdDelivery; import com.malk.huagao.entity.KdYdDeliveryDetail; import com.malk.huagao.entity.KdYdTransfer; import com.malk.huagao.entity.KdYdTransferDetail; import com.malk.huagao.mapper.*; import com.malk.huagao.service.IKdYdTransferService; 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.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.List; import java.util.Map; /** *

* 服务实现类 *

* * @author LQY * @since 2025-11-12 */ @Service public class KdYdTransferServiceImpl extends ServiceImpl implements IKdYdTransferService { @Autowired private YDClient ydClient; @Autowired private KdYdTransferMapper kdYdTransferMapper; @Autowired private KdYdTransferDetailMapper kdYdTransferDetailMapper; @Override public void insertTransfer(Map map) { MDC.put("MDC_KEY_PID", "1003"); String formInstId = UtilMap.getString(map, "formInstId"); String type = UtilMap.getString(map, "type"); if ("3".equals(type)) { String bm = UtilMap.getString(map, "bm"); KdYdTransfer kdYdTransfer = new KdYdTransfer(); kdYdTransfer.setOperationType("3"); kdYdTransfer.setSyncStatus("0"); kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper().eq(KdYdTransfer::getDjbh, bm)); return; // 或者根据你的业务逻辑返回相应的结果 } 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_mhubzsa5"); LocalDateTime rq = parseTimestamp(UtilMap.getString(formData, "dateField_mhubzsab")); String kh = UtilMap.getString(formData, "textField_mhubzsas"); String dchzlx = UtilMap.getString(formData, "selectField_mhubzsa7"); String djbh = UtilMap.getString(formData, "serialNumberField_mhubzsa4"); String ywlx = UtilMap.getString(formData, "textField_mhubzsa6"); String xsy = UtilMap.getString(formData, "employeeField_mhubzsa8").replace("[\"", "").replace("\"]", "").trim(); String dcbm = UtilMap.getString(formData, "departmentSelectField_mhubzsae").replace("[\"", "").replace("\"]", "").trim(); String drbm = UtilMap.getString(formData, "departmentSelectField_mhubzsad").replace("[\"", "").replace("\"]", "").trim(); String drhzlx = UtilMap.getString(formData, "selectField_mhubzsa9"); String dbfx = UtilMap.getString(formData, "selectField_mhubzsaa"); String dbdlx = UtilMap.getString(formData, "selectField_mhubzsac"); String dchz = UtilMap.getString(formData, "textField_mhubzsat"); String hdfs = UtilMap.getString(formData, "selectField_mhubzsah"); String ysfs = UtilMap.getString(formData, "selectField_mhubzsai"); String kdgs = UtilMap.getString(formData, "selectField_mhubzsar"); String fkfs = UtilMap.getString(formData, "selectField_mhubzsag"); List tableField = (List) formData.get("tableField_mhubzsau"); KdYdTransfer kdYdTransfer = new KdYdTransfer(); kdYdTransfer.setDjlx(djlx); kdYdTransfer.setRq(rq); kdYdTransfer.setKh(kh); kdYdTransfer.setDjbh(djbh); kdYdTransfer.setSyncStatus("0"); kdYdTransfer.setOperationType("1"); kdYdTransfer.setYsfs(ysfs); kdYdTransfer.setHdfs(hdfs); kdYdTransfer.setKdgs(kdgs); kdYdTransfer.setFkfs(fkfs); kdYdTransfer.setDchzlx(dchzlx); kdYdTransfer.setDchz(dchz); kdYdTransfer.setDchzlx(dchzlx); kdYdTransfer.setDbfx(dbfx); kdYdTransfer.setDbdlx(dbdlx); kdYdTransfer.setDcbm(dcbm); kdYdTransfer.setDrbm(drbm); kdYdTransfer.setDrhzlx(drhzlx); kdYdTransfer.setYwlx(ywlx); kdYdTransfer.setCgy(xsy); if ("2".equals(type)) { kdYdTransfer.setOperationType(type); kdYdTransferMapper.update(kdYdTransfer, new LambdaQueryWrapper().eq(KdYdTransfer::getDjbh, djbh)); } else { kdYdTransferMapper.insert(kdYdTransfer); } Long id = kdYdTransfer.getId(); int count = 1; for (Map item : tableField) { String wlbm = safeGetString(item, "textField_mhubzsav"); String wlmc = safeGetString(item, "textField_mhubzsaw"); String ggxh = safeGetString(item, "textField_mhubzsax"); String dw = safeGetString(item, "textField_mhubzsay"); int dbsl = parseInt(safeGetString(item, "numberField_mhubzsaz"), 0); // 如果为空或格式错误,返回 0 String ph = safeGetString(item, "textField_mhubzsb0"); String dcck = safeGetString(item, "textField_mhubzsb1"); String dcckzt = safeGetString(item, "textField_mhubzsb5"); String dccw = safeGetString(item, "textField_mhubzsb2"); String drck = safeGetString(item, "textField_mhubzsb3"); String drckzt = safeGetString(item, "textField_mhubzsb6"); String drcw = safeGetString(item, "textField_mhubzsb4"); KdYdTransferDetail kdYdTransferDetail = new KdYdTransferDetail(); kdYdTransferDetail.setTransferId(id); kdYdTransferDetail.setWlbm(wlbm); kdYdTransferDetail.setWlmc(wlmc); kdYdTransferDetail.setGgxh(ggxh); kdYdTransferDetail.setDetailId(count); kdYdTransferDetail.setGgxh(ggxh); kdYdTransferDetail.setDw(dw); kdYdTransferDetail.setDbsl(dbsl); kdYdTransferDetail.setPh(ph); kdYdTransferDetail.setDcck(dcck); kdYdTransferDetail.setDcckzt(dcckzt); kdYdTransferDetail.setDccw(dccw); kdYdTransferDetail.setDrck(drck); kdYdTransferDetail.setDrckzt(drckzt); kdYdTransferDetail.setDrcw(drcw); kdYdTransferDetail.setSyncStatus("0"); kdYdTransferDetail.setOperationType("1"); if ("2".equals(type) || "3".equals(type)) { kdYdTransferDetail.setOperationType(type); kdYdTransferDetailMapper.update(kdYdTransferDetail, new LambdaQueryWrapper() .eq(KdYdTransferDetail::getWlbm, wlbm) .eq(KdYdTransferDetail::getTransferId, id)); } else { kdYdTransferDetailMapper.insert(kdYdTransferDetail); } count++; //save(kdYdDeliveryDetail); } // ydClient.operateData( // YDParam.builder() // .formInstanceId(formInstId) // .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("textField_mgrqnxmm", id))) // .useLatestVersion(true).build(), YDConf.FORM_OPERATION.update); } private static LocalDateTime parseTimestamp(String timestampStr) { if (timestampStr == null || timestampStr.trim().isEmpty()) return null; try { long timestamp = Long.parseLong(timestampStr.trim()); return LocalDateTime.ofInstant( Instant.ofEpochMilli(timestamp), ZoneId.systemDefault() ); } catch (NumberFormatException e) { return null; } } 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); } }