package com.huaheng.pc.shipment.kuaidiHeader.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.common.constant.QuantityConstant; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.DataUtils; import com.huaheng.common.utils.DateUtils; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.Wrappers; import com.huaheng.common.utils.file.FileUploadUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.company.domain.Company; import com.huaheng.pc.config.company.service.CompanyService; import com.huaheng.pc.shipment.kuaidiDetail.domain.KuaidiDetail; import com.huaheng.pc.shipment.kuaidiDetail.service.KuaidiDetailService; import com.huaheng.pc.shipment.kuaidiHeader.domain.KuaidiHeader; import com.huaheng.pc.shipment.kuaidiHeader.mapper.KuaidiHeaderMapper; import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; import com.huaheng.pc.system.dict.service.IDictDataService; import com.huaheng.pc.task.taskHeader.domain.TaskHeader; import com.huaheng.pc.u8.domain.ICSShipmentHeader; import com.huaheng.pc.u8.service.ICSShipmentHeaderService; import com.huaheng.pc.u8.service.IcsKuaidiService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 【请填写功能名称】 服务层实现 * * @author huaheng * @date 2022-09-07 */ @Service public class KuaidiHeaderService extends ServiceImpl<KuaidiHeaderMapper, KuaidiHeader> { @Resource private IDictDataService dictDataService; @Resource private IcsKuaidiService icsKuaidiService; @Resource private KuaidiDetailService kuaidiDetailService; @Resource private ShipmentHeaderService shipmentHeaderService; @Resource private ICSShipmentHeaderService icsShipmentHeaderService; @Resource private KuaidiHeaderDataService kuaidiHeaderDataService; @Resource private CompanyService companyService; @Resource private ShipmentDetailService shipmentDetailService; public AjaxResult<Boolean> saveHeader(KuaidiHeader kuaidiHeader) { kuaidiHeader.setType("CO"); if (dictDataService.checkConfig("shipmentType", kuaidiHeader.getType()) == false) { return AjaxResult.error("没有对应的出库单类型"); } String code = kuaidiHeaderDataService.createCode(kuaidiHeader.getType()); kuaidiHeader.setId(null); kuaidiHeader.setLastUpdated(null); kuaidiHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); kuaidiHeader.setCreated(null); kuaidiHeader.setCreatedBy(ShiroUtils.getLoginName()); kuaidiHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); kuaidiHeader.setCode(code); kuaidiHeader.setDeleted(false); boolean result = this.save(kuaidiHeader); return AjaxResult.toAjax(result); } /** * 从U8获取信息 * 1、检查出库单号或者发货单号是否为空,如果为空则报错 * 2、如果是出库单获取信息,剔除在快递单中已存在的出库单 * 3、如果是发货单,分组,剔除在快递单中已存在的出库单 */ @Transactional(rollbackFor = Exception.class) public AjaxResult saveU8Kuaidi(KuaidiHeader kuaidiHeader) { //1、检查出库单号或者发货单号是否为空,如果为空则报错 if (StringUtils.isEmpty(kuaidiHeader.getOrderBill()) && StringUtils.isEmpty(kuaidiHeader.getSourceCode())) { return AjaxResult.error("U8出库单号和发货单号为空,请填下U8结束出库单号或发货单单号"); } //2、如果是出库单获取信息,剔除在快递单中已存在的出库单 if (!StringUtils.isEmpty(kuaidiHeader.getOrderBill()) && StringUtils.isEmpty(kuaidiHeader.getFromCode())) { return saveu8KuaiOne(kuaidiHeader); } //批量获取出库单单据 if (StringUtils.isNotEmpty(kuaidiHeader.getOrderBill()) && StringUtils.isNotEmpty(kuaidiHeader.getFromCode())) { return saveu8KuaiTwo(kuaidiHeader); } //3、如果是发货单,分组,剔除在快递单中已存在的出库单 if (StringUtils.isEmpty(kuaidiHeader.getOrderBill()) && !StringUtils.isEmpty(kuaidiHeader.getSourceCode())) { return saveu8KuaiThree(kuaidiHeader); } return AjaxResult.success("成功"); } //如果是出库单获取信息,剔除在快递单中已存在的出库单 public AjaxResult saveu8KuaiOne(KuaidiHeader kuaidiHeader) { KuaidiHeader kuaidiHeader1 = new KuaidiHeader(); kuaidiHeader1.setOrderBill(kuaidiHeader.getOrderBill()); KuaidiHeader condition = kuaidiHeaderDataService.getByOrderBill(kuaidiHeader1); if (condition != null) { return AjaxResult.success("该出库单的快递信息已存在,请在搜索栏搜索"); } kuaidiHeader.setSourceCode(""); //(2)获取子单列表 List<Map<String, String>> list = icsKuaidiService.getKDMeseeage(kuaidiHeader); List<KuaidiDetail> kuaidiDetails = new ArrayList<>(); for (Map<String, String> map : list) { KuaidiDetail kuaidiDetail = this.getEntityFromU8(map); kuaidiDetails.add(kuaidiDetail); } //(3)根据快递子单反推快递主单,通过发货单号搜索wms出库单和中间表 Map<String, Object> map = this.checkHeader(kuaidiDetails.get(0).getSourceCode()); Boolean flag = ((Boolean) map.get("flag")).booleanValue(); if (flag == false) { return AjaxResult.error("快递信息不存在"); } KuaidiHeader header = JSONObject.parseObject(JSON.toJSONString(map.get("header")), KuaidiHeader.class); header.setOrderBill(kuaidiDetails.get(0).getOrderBill()); header.setUserDef1(kuaidiDetails.get(0).getUserDef1()); header.setWarehouseCode(QuantityConstant.WAREHOUSE_KS); this.save(header); for (KuaidiDetail detail : kuaidiDetails) { detail.setShipmentId(header.getId()); detail.setShipmentCode(header.getCode()); detail.setWarehouseCode(QuantityConstant.WAREHOUSE_KS); kuaidiDetailService.save(detail); } return AjaxResult.success("成功"); } //批量获取出库单单据 public AjaxResult saveu8KuaiTwo(KuaidiHeader kuaidiHeader) { //1、获取所有出库单信息 List<Map<String, String>> mapList = icsKuaidiService.getKDMeseeage(kuaidiHeader); return saveKuaidiData(kuaidiHeader, mapList); } //批量获取出库单单据 @Transactional(rollbackFor = Exception.class) public AjaxResult saveu8KuaiTwoV1(KuaidiHeader kuaidiHeader) { //1、获取所有出库单信息 String warehouseCode = kuaidiHeader.getWarehouseCode(); List<Map<String, String>> mapList = icsKuaidiService.getKDMeseeageV1(kuaidiHeader, kuaidiHeader.getType(), kuaidiHeader.getWarehouseCode()); return saveKuaidiData(kuaidiHeader, mapList); } public AjaxResult saveKuaidiData(KuaidiHeader kuaidiHeader, List<Map<String, String>> mapList) { //2、发货单分组,查看是否符合快递条件 Set<String> hashSet = new HashSet(); for (Map<String, String> item : mapList) { hashSet.add(item.get("subconsignmentcode")); } //循环判断 for (String s : hashSet) { Map<String, Object> hashmap = this.checkHeader(s); Boolean flag = ((Boolean) hashmap.get("flag")).booleanValue(); //不符合条件的剔除 if (flag == false) { continue; } KuaidiHeader header1 = JSONObject.parseObject(JSON.toJSONString(hashmap.get("header")), KuaidiHeader.class); List<KuaidiDetail> kuaidiDetails = new ArrayList<>(); for (Map<String, String> item : mapList) { //获取不存在快递单数据里的单据 if (item.get("subconsignmentcode").equals(s)) { KuaidiHeader condition = new KuaidiHeader(); condition.setOrderBill(item.get("code")); condition.setWarehouseCode(kuaidiHeader.getWarehouseCode()); condition = kuaidiHeaderDataService.getByOrderBill(condition); if (condition == null) { KuaidiDetail kuaidiDetail = this.getEntityFromU8(item); kuaidiDetails.add(kuaidiDetail); } } } if (kuaidiDetails.isEmpty()) { continue; } Set<String> stringSet = new HashSet<>(); //再把子单以出库单分组 lable1: for (KuaidiDetail kuaidiDetail : kuaidiDetails) { if (kuaidiDetail.getMaterialCode().startsWith("9")) { continue lable1; } stringSet.add(kuaidiDetail.getOrderBill()); } for (String s1 : stringSet) { LambdaQueryWrapper<KuaidiHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(KuaidiHeader::getOrderBill, s1); lambdaQueryWrapper.eq(KuaidiHeader::getCreatedBy, header1.getCreatedBy()); lambdaQueryWrapper.eq(KuaidiHeader::getWarehouseCode, kuaidiHeader.getWarehouseCode()); lambdaQueryWrapper.last("limit 1"); KuaidiHeader header = this.getOne(lambdaQueryWrapper); if (header == null) { header = header1; header.setId(null); } header.setOrderBill(s1); header.setWarehouseCode(kuaidiHeader.getWarehouseCode()); header.setUserDef1(kuaidiDetails.get(0).getUserDef1()); this.saveOrUpdate(header); lable2: for (KuaidiDetail detail : kuaidiDetails) { if (detail.getOrderBill().equals(s1)) { if (detail.getMaterialCode().startsWith("9")) { continue lable2; } detail.setShipmentId(header.getId()); detail.setShipmentCode(header.getCode()); detail.setWarehouseCode(kuaidiHeader.getWarehouseCode()); kuaidiDetailService.save(detail); } } } } return AjaxResult.success("成功"); } //3、如果是发货单,分组,剔除在快递单中已存在的出库单 public AjaxResult saveu8KuaiThree(KuaidiHeader kuaidiHeader) { //(1)检验发货单号的发货信息是否可以快递 Map<String, Object> hashmap = this.checkHeader(kuaidiHeader.getSourceCode()); Boolean flag = ((Boolean) hashmap.get("flag")).booleanValue(); if (flag == false) { return AjaxResult.error("快递信息不存在"); } KuaidiHeader header = JSONObject.parseObject(JSON.toJSONString(hashmap.get("header")), KuaidiHeader.class); //(2) 分组,以出库单号为分组基准 List<Map<String, String>> mapList = icsKuaidiService.getKDMeseeage(kuaidiHeader); Set<String> hashSet = new HashSet(); for (Map<String, String> item : mapList) { hashSet.add(item.get("code")); } int number = 0; for (String item : hashSet) { List<KuaidiDetail> kuaidiDetails = new ArrayList<>(); //(3)剔除在快递单中已存在的出库单 KuaidiHeader condition = new KuaidiHeader(); condition.setOrderBill(item); condition = kuaidiHeaderDataService.getByOrderBill(condition); if (condition == null) { for (Map<String, String> map : mapList) { if (map.get("code").equals(item)) { KuaidiDetail kuaidiDetail = this.getEntityFromU8(map); kuaidiDetails.add(kuaidiDetail); } } } if (kuaidiDetails.isEmpty()) { number++; continue; } //(4)生成主单和子单 header.setId(null); header.setOrderBill(item); header.setUserDef1(kuaidiDetails.get(0).getUserDef1()); header.setWarehouseCode(QuantityConstant.WAREHOUSE_KS); this.save(header); for (KuaidiDetail detail : kuaidiDetails) { detail.setShipmentId(header.getId()); detail.setShipmentCode(header.getCode()); detail.setWarehouseCode(QuantityConstant.WAREHOUSE_KS); kuaidiDetailService.save(detail); } } if (number == hashSet.size()) { return AjaxResult.success("该发货单号的快递信息都存在,请在搜索栏以发货单号搜索"); } return AjaxResult.success("成功"); } //根据获取的U8的信息生成快递子单 public KuaidiDetail getEntityFromU8(Map<String, String> map) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); try { date = simpleDateFormat.parse(map.get("date")); } catch (ParseException e) { throw new ServiceException("时间转换格式错误"); } KuaidiDetail kuaidiDetail = new KuaidiDetail(); kuaidiDetail.setUWarehouseCode(map.get("warehousecode")); kuaidiDetail.setUnit(map.get("cmassunitname")); kuaidiDetail.setWarehouseId(1); kuaidiDetail.setWarehouseCode("CS0001"); kuaidiDetail.setSourceCode(map.get("subconsignmentcode")); kuaidiDetail.setMaterialCode(map.get("inventorycode")); kuaidiDetail.setInventoryStatus("good"); kuaidiDetail.setQty(new BigDecimal(map.get("quantity"))); kuaidiDetail.setCreated(date); kuaidiDetail.setCreatedBy(map.get("maker")); kuaidiDetail.setOrderBill(map.get("code")); kuaidiDetail.setUserDef1(map.get("auditdate")); return kuaidiDetail; } /** * 根据wms出库单或者中间表检验发货单信息 * * @param code * @return */ public Map<String, Object> checkHeader(String code) { //先查看是否存在此发货单的快递信息 //wms出库单检验 Boolean flag = true; LambdaQueryWrapper<ShipmentHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ShipmentHeader::getSourceCode, code); lambdaQueryWrapper.eq(ShipmentHeader::getKdEable, 1); lambdaQueryWrapper.last("limit 1"); ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(lambdaQueryWrapper); ICSShipmentHeader icsShipmentHeader = new ICSShipmentHeader(); if (shipmentHeader == null || StringUtils.isEmpty(shipmentHeader.getRecMobile())) { //wms中间表检验 icsShipmentHeader.setCDLCode(code); icsShipmentHeader.setCSCName("快递"); icsShipmentHeader = icsShipmentHeaderService.selectModel(icsShipmentHeader); if (icsShipmentHeader == null || StringUtils.isEmpty(icsShipmentHeader.getRecMobile())) { flag = false; } } KuaidiHeader header = new KuaidiHeader(); if (shipmentHeader != null && StringUtils.isNotEmpty(shipmentHeader.getRecMobile())) { header = kuaidiHeaderDataService.getModelByShipment(shipmentHeader); } if (shipmentHeader == null && icsShipmentHeader != null && StringUtils.isNotEmpty(icsShipmentHeader.getRecMobile())) { header = kuaidiHeaderDataService.getModelByICSShipment(icsShipmentHeader); } Map<String, Object> map = new HashMap<>(); map.put("flag", flag); map.put("header", header); return map; } public Boolean importData(List<KuaidiHeader> maps, Boolean num) { //实体转换 int number = 0; for (KuaidiHeader map : maps) { if (StringUtils.isNull(map.getCompanyId())) { continue; } KuaidiHeader kuaidiHeader = new KuaidiHeader(); kuaidiHeader.setType("CO"); String code = kuaidiHeaderDataService.createCode(kuaidiHeader.getType()); //检查数据 kuaidiHeaderDataService.checkImport(map); Company company = companyService.getById(DataUtils.getInteger(map.getCompanyId())); if (company == null) { throw new ServiceException("公司ID错误"); } kuaidiHeader = kuaidiHeaderDataService.createHeaderByImport(kuaidiHeader, map, company); if (num == true) { if (StringUtils.isNotNull(map.getTotalWeight())) { kuaidiHeader.setTotalWeight(map.getTotalWeight().toString()); } else { throw new ServiceException("重量为空"); } if (StringUtils.isNotNull(map.getKuaidiCom())) { kuaidiHeader.setKuaidiCom(map.getKuaidiCom().toString()); } else { throw new ServiceException("快递公司为空"); } if (StringUtils.isNotNull(map.getTrackCode())) { kuaidiHeader.setTrackCode(map.getTrackCode().toString()); } else { throw new ServiceException("快递单号为空"); } } kuaidiHeader.setKuaidiCom(""); kuaidiHeader.setDeleted(num); kuaidiHeader.setCode(code); kuaidiHeader.setWarehouseId(2); kuaidiHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); kuaidiHeader.setCreated(new Date()); kuaidiHeader.setCreatedBy(ShiroUtils.getUserName()); kuaidiHeader.setEnable(1); boolean tag = this.save(kuaidiHeader); if (!tag) { throw new ServiceException("存储快递信息失败"); } } return true; } @Transactional public AjaxResult sendKD(KuaidiHeader kuaidiHeader) { //查出销售单的快递信息 return kuaidiHeaderDataService.sendKD(kuaidiHeader); } //批量导入到快递100 @Transactional public AjaxResult sendKDS(KuaidiHeader kuaidiHeader) { String ids = kuaidiHeader.getOrderBill(); if (StringUtils.isEmpty(ids)) { return AjaxResult.error("没有选中快递数据"); } for (Integer id : Convert.toIntArray(ids)) { KuaidiHeader header = this.getById(id); if (header == null) { return AjaxResult.error("id为" + id + "的快递信息不存在"); } header.setKuaidiCom(kuaidiHeader.getKuaidiCom()); kuaidiHeaderDataService.sendKD(header); } return AjaxResult.success("成功"); } //快递打印 public AjaxResult printKD(String kuaidiNum, String warehouseCode) { if (StringUtils.isEmpty(kuaidiNum)) { return AjaxResult.error("没有导入快递信息"); } return kuaidiHeaderDataService.printKD(kuaidiNum, warehouseCode); } //快递批量打印 public AjaxResult printKDS(String ids) { if (StringUtils.isEmpty(ids)) { return AjaxResult.error("没有选中快递数据"); } Integer[] kdIds = Convert.toIntArray(ids); if (kdIds.length > 19) { return AjaxResult.error("一次性批量快递打印只能在20张以内"); } StringBuilder sb = new StringBuilder(); boolean flag = false; String kuaidiNum = ""; String warehouseCode = QuantityConstant.WAREHOUSE_KS; for (Integer id : kdIds) { KuaidiHeader header = this.getById(id); if (header == null) { return AjaxResult.error("id为" + id + "的快递信息不存在"); } if (StringUtils.isEmpty(header.getKuaidiNum())) { return AjaxResult.error("id为" + id + "的快递信息没有导入到快递100"); } if (flag) { sb.append(","); } else { flag = true; } sb.append(header.getKuaidiNum()); warehouseCode = header.getWarehouseCode(); } kuaidiNum = sb.toString(); return kuaidiHeaderDataService.printKD(kuaidiNum, warehouseCode); } private static String fileUrl = "D:\\wmsfile\\wmsfile\\"; private static String pictureUrl = "http://172.16.2.10:8016/wms/profile/wmsfile/"; //获取图片地址 public AjaxResult getPicture() { //获取图片的判断条件,要有重量,快递单号,status=0 KuaidiHeader kuaidiHeader = this.getModelForPicture(); if (kuaidiHeader == null) { return AjaxResult.success("没有符合条件的快递单"); } String[] codes = Convert.toStrArray(kuaidiHeader.getTrackCode()); // String filePath = HuaHengConfig.getProfile() +"wmsfile/"+ codes[0]+".jpg"; String filePath = fileUrl + codes[0] + ".jpg"; File file = new File(filePath); MultipartFile multipartFile = null; try { multipartFile = FileUploadUtils.fileToMultipartFile(file); } catch (Exception e) { kuaidiHeader.setStatus(2L); this.updateById(kuaidiHeader); throw new ServiceException("图片不存在"); } try { FileUploadUtils.upload(multipartFile); } catch (Exception e) { throw new ServiceException("图片上传失败"); } kuaidiHeader.setStatus(1L); kuaidiHeader.setPicture(pictureUrl + codes[0] + ".jpg"); this.updateById(kuaidiHeader); return AjaxResult.success("成功"); } public KuaidiHeader getModelForPicture() { LambdaQueryWrapper<KuaidiHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.ne(KuaidiHeader::getTrackCode, ""); lambdaQueryWrapper.ne(KuaidiHeader::getTotalWeight, ""); lambdaQueryWrapper.eq(KuaidiHeader::getStatus, 0L); lambdaQueryWrapper.last("limit 1"); return this.getOne(lambdaQueryWrapper); } public AjaxResult saveShipmentKuadi(){ LambdaQueryWrapper<ShipmentHeader> wrapper=new LambdaQueryWrapper<>(); // wrapper.eq(ShipmentHeader::getWarehouseCode,QuantityConstant.WAREHOUSE_KS); wrapper.ge(ShipmentHeader::getLastStatus,QuantityConstant.SHIPMENT_HEADER_COMPLETED); wrapper.apply("(recMobile is not null and recMobile != '') "); wrapper.apply("(referCode is not null and referCode != '') "); wrapper.ge(ShipmentHeader::getLastUpdated, DateUtils.getNowPreDays("yyyy-MM-dd",1)); wrapper.orderByDesc(ShipmentHeader::getId); List<ShipmentHeader> list=shipmentHeaderService.list(wrapper); for(ShipmentHeader header:list){ LambdaQueryWrapper<KuaidiHeader> wrapper1=new LambdaQueryWrapper<>(); // wrapper1.eq(KuaidiHeader::getWarehouseCode,QuantityConstant.WAREHOUSE_KS); wrapper1.eq(KuaidiHeader::getSourceCode,header.getReferCode()); wrapper1.last("limit 1"); KuaidiHeader kuaidiHeader=this.getOne(wrapper1); if(kuaidiHeader!=null){ continue; } kuaidiHeader=new KuaidiHeader(); kuaidiHeader.setWarehouseCode(header.getWarehouseCode()); kuaidiHeader.setSourceCode(header.getReferCode()); kuaidiHeader.setOrderBill(header.getReferCode()); kuaidiHeader.setCode(header.getReferCode()); kuaidiHeader.setRecName(header.getRecName()); kuaidiHeader.setRecAddr(header.getRecAddr()); kuaidiHeader.setRecMobile(header.getRecMobile()); kuaidiHeader.setRecCompany(header.getRecCompany()); kuaidiHeader.setSendAddr(header.getSendAddr()); kuaidiHeader.setSendName(header.getSendName()); kuaidiHeader.setSendMobile(header.getSendMobile()); kuaidiHeader.setSendCompany(header.getSendCompany()); kuaidiHeader.setDeleted(false); kuaidiHeader.setCreatedBy(header.getCreatedBy()); kuaidiHeader.setLastUpdatedBy(header.getCreatedBy()); // kuaidiHeader.setKuaidiCom(header.getKuaidiCom()); if(!this.save(kuaidiHeader)){ continue; } List<ShipmentDetail> shipmentDetails=shipmentDetailService.getListByShipmentHeaderId(header.getId(),header.getWarehouseCode()); List<KuaidiDetail> kuaidiDetails=new ArrayList<>(); for (ShipmentDetail detail:shipmentDetails) { KuaidiDetail kuaidiDetail = new KuaidiDetail(); kuaidiDetail.setShipmentId(kuaidiHeader.getId()); kuaidiDetail.setShipmentCode(kuaidiHeader.getCode()); kuaidiDetail.setWarehouseCode(header.getWarehouseCode()); kuaidiDetail.setMaterialCode(detail.getMaterialCode()); kuaidiDetail.setQty(detail.getQty()); kuaidiDetail.setUWarehouseCode(detail.getUWarehouseCode()); kuaidiDetail.setUnit(detail.getMaterialUnit()); kuaidiDetail.setInventoryStatus(detail.getInventorySts()); kuaidiDetail.setWarehouseId(detail.getWarehouseId()); kuaidiDetail.setOrderBill(kuaidiHeader.getOrderBill()); kuaidiDetail.setCreated(detail.getCreated()); kuaidiDetail.setCreatedBy(detail.getCreatedBy()); kuaidiDetail.setLastUpdated(detail.getLastUpdated()); kuaidiDetail.setLastUpdatedBy(detail.getLastUpdatedBy()); kuaidiDetail.setDeleted(detail.getDeleted()); kuaidiDetails.add(kuaidiDetail); } if(!kuaidiDetailService.saveBatch(kuaidiDetails)){ continue; } } return AjaxResult.success(); } }