提交 d2d76950 authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge branch 'master' into v23.3_lmsweight_20240827

......@@ -291,4 +291,56 @@ public class OrderChildVO {
}
return new ArrayList<>();
}
@ApiModelProperty(value = "目的地现场联系人")
private String receiveContact;
@ApiModelProperty(value = "目的地联系人手机号")
private String receiveContactPhone;
@ApiModelProperty(value = "收货-是否需要系统排队 0 否 1 是")
private Integer receiveWaitSystem;
@ApiModelProperty(value = "收货-是否需要系统排队 描述: 需要 不需要")
public String getReceiveWaitSystemMsg() {
return OrderGoodsEnum.SendWaitSystemMsgEnum.getMsgByCode(receiveWaitSystem);
}
@ApiModelProperty(value = "收货-排队系统名称")
private String receiveWaitSystemName;
@ApiModelProperty(value = "收货-排队系统形式 1:小程序 2:app")
private Integer receiveWaitMode;
@ApiModelProperty(value = "收货-排队系统形式 描述: 微信小程序 app")
public String getReceiveWaitModeMsg() {
return OrderGoodsEnum.SendWaitModeEnum.getMsgByCode(receiveWaitMode);
}
@ApiModelProperty(value = "收货采样位置")
private String receiveQualityPosition;
@ApiModelProperty(value = "收货地采样视频")
private String receiveSamplingVideo;
@ApiModelProperty(value = "收货地采样照片")
private String receiveSamplingPic;
@ApiModelProperty(value = "监卸联系人")
private String superviseUnloadContacts;
@ApiModelProperty(value = "监卸联系人电话")
private String superviseUnloadMobile;
@ApiModelProperty(value = "收货地采样照片")
public List<String> getReceiveSamplingPicList() {
if (StringUtils.isNotBlank(receiveSamplingPic)) {
return JSONUtil.toList(receiveSamplingPic, String.class);
}
return new ArrayList<>();
}
@ApiModelProperty(value = "收货地采样视频")
public List<String> getReceiveSamplingVideoList() {
if (StringUtils.isNotBlank(receiveSamplingVideo)) {
return JSONUtil.toList(receiveSamplingVideo, String.class);
}
return new ArrayList<>();
}
}
......@@ -124,6 +124,9 @@ public class CarrierOrderChildDetailVO {
@ApiModelProperty(value = "收货待确认时间", example = "2020-01-01 10:10:10")
private String unloadTime;
@ApiModelProperty(value = "货源地详细地址")
private String sendDetailAddress;
@ApiModelProperty(value = "目的地详细地址")
private String receiveDetailAddress;
}
\ No newline at end of file
......@@ -201,4 +201,29 @@ public class OrderGoodsVO {
@ApiModelProperty("当前货单总吨数是否超过总拉运量 1:超过 ")
private Integer overOrderWeight;
@ApiModelProperty(value = "目的地现场联系人")
private String receiveContact;
@ApiModelProperty(value = "目的地联系人手机号")
private String receiveContactPhone;
@ApiModelProperty(value = "收货-是否需要系统排队 0 否 1 是")
private Integer receiveWaitSystem;
@ApiModelProperty(value = "收货-是否需要系统排队 描述: 需要 不需要")
public String getReceiveWaitSystemMsg() {
return OrderGoodsEnum.SendWaitSystemMsgEnum.getMsgByCode(receiveWaitSystem);
}
@ApiModelProperty(value = "收货-排队系统名称")
private String receiveWaitSystemName;
@ApiModelProperty(value = "收货-排队系统形式 1:小程序 2:app")
private Integer receiveWaitMode;
@ApiModelProperty(value = "收货-排队系统形式 描述: 微信小程序 app")
public String getReceiveWaitModeMsg() {
return OrderGoodsEnum.SendWaitModeEnum.getMsgByCode(receiveWaitMode);
}
}
\ No newline at end of file
......@@ -16,9 +16,13 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
......@@ -79,5 +83,12 @@ public class CarrierPerformanceProgressController {
return Result.ok(list);
}
@ApiOperation(value = "导出履约进度",notes = "<br>By:杨启发")
@PostMapping("/exportPerformanceProgress")
public void exportPerformanceProgress(@RequestBody PagePerformanceProgress param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = performanceProgressService.exportPerformanceProgress(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
......@@ -10,6 +10,7 @@ import com.clx.performance.param.pc.carrier.UpdatePerformanceProgressParam;
import com.clx.performance.vo.pc.PerformanceProgressDetailVO;
import com.clx.performance.vo.pc.PerformanceProgressOperationLogVO;
import com.clx.performance.vo.pc.PerformanceProgressVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.util.List;
......@@ -39,4 +40,6 @@ public interface PerformanceProgressService {
void dealPerformanceProgress4OrderGoods(OrderGoods data);
void dealPerformanceProgress4OrderChild(OrderChild data);
SXSSFWorkbook exportPerformanceProgress(PagePerformanceProgress param);
}
......@@ -9,6 +9,7 @@ import com.clx.message.req.message.AliSmsMessageReq;
import com.clx.order.enums.OrderEnum;
import com.clx.order.enums.ResultEnum;
import com.clx.order.enums.*;
import com.clx.order.feign.AddressFeign;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderInfoVO;
......@@ -280,6 +281,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private ClxMessageOpenapiFeign clxMessageOpenapiFeign;
@Autowired
private ClxMessageConfig messageConfig;
@Autowired
private AddressFeign addressFeign;
@Autowired
private LoadAppConfig loadAppConfig;
......@@ -1751,13 +1754,28 @@ public class OrderChildServiceImpl implements OrderChildService {
result.setSendWaitSystemName(orderInfoFeign.getSendWaitSystemName());
result.setSendWaitMode(orderInfoFeign.getSendWaitMode());
//目的地信息
result.setReceiveContact(orderInfoFeign.getReveiveContact());
result.setReceiveContactPhone(orderInfoFeign.getReveiveContactPhone());
result.setReceiveWaitSystem(orderInfoFeign.getReveiveWaitSystem());
result.setReceiveWaitSystemName(orderInfoFeign.getReveiveWaitSystemName());
result.setReceiveWaitMode(orderInfoFeign.getReveiveWaitMode());
// 采样 监装信息
result.setSendSamplingPic(orderInfoFeign.getSendSamplingPic());
result.setSendQualityPosition(orderInfoFeign.getSendQualityPosition());
result.setSendSamplingVideo(orderInfoFeign.getSendSamplingVideo());
SuperviseInfo superviseInfo = getSuperviseInfo(orderChild.getOrderNo(), orderChild.getChildNo());
SuperviseInfo superviseInfo = getSuperviseInfo(orderChild.getOrderNo(), OrderChildEnum.SuperviseTypeEnum.SUPERVISE_LOAD.getCode());
result.setSuperviseContacts(superviseInfo != null ? superviseInfo.getSuperviseContacts() : null);
result.setSuperviseMobile(superviseInfo != null ? superviseInfo.getSuperviseMobile() : null);
result.setSendSamplingPic(superviseInfo==null? null :orderInfoFeign.getSendSamplingPic());
result.setSendQualityPosition(superviseInfo==null? null :orderInfoFeign.getSendQualityPosition());
result.setSendSamplingVideo(superviseInfo==null? null :orderInfoFeign.getSendSamplingVideo());
// 采样 监卸信息
SuperviseInfo superviseUnloadInfo = getSuperviseInfo(orderChild.getOrderNo(), OrderChildEnum.SuperviseTypeEnum.SUPERVISE_UNLOAD.getCode());
result.setSuperviseUnloadContacts(superviseUnloadInfo != null ? superviseUnloadInfo.getSuperviseContacts() : null);
result.setSuperviseUnloadMobile(superviseUnloadInfo != null ? superviseUnloadInfo.getSuperviseMobile() : null);
result.setReceiveSamplingPic(superviseUnloadInfo==null? null :orderInfoFeign.getReveiveSamplingPic());
result.setReceiveQualityPosition(superviseUnloadInfo==null? null :orderInfoFeign.getReveiveQualityPosition());
result.setReceiveSamplingVideo(superviseUnloadInfo==null? null :orderInfoFeign.getReveiveSamplingVideo());
//查询结算信息
Optional<SettlementOwnerDetail> optional = settlementOwnerDetailDao.getByChildNo(childNo);
......@@ -1797,14 +1815,14 @@ public class OrderChildServiceImpl implements OrderChildService {
}
/**
* 获取监装
* 获取监装、监卸信息
* @param orderNo
* @param childNo
* @param type
* @return
*/
private SuperviseInfo getSuperviseInfo(String orderNo, String childNo) {
NeedAlertSuperviseInfoResultVO result = new NeedAlertSuperviseInfoResultVO();
private SuperviseInfo getSuperviseInfo(String orderNo, int type) {
App app = appConfig.getApp(AppEnum.UniqueIdentifier.PURCHASE_MANAGE.getCode());//对接马上来供应链配置信息
//组装配置信息
RequestConfig config = new RequestConfig()
.setAppId(app.getAppNo())
......@@ -1813,7 +1831,7 @@ public class OrderChildServiceImpl implements OrderChildService {
//通过订单号查询监装监卸信息
SupplyChainSupervisionLoadAction action = new SupplyChainSupervisionLoadAction();
action.setOrderNo(orderNo);
action.setType(OrderChildEnum.SuperviseTypeEnum.SUPERVISE_LOAD.getCode());
action.setType(type);
Result<SupervisionLoadInfoDto> supervisionLoadInfoDto = OpenClient.doAction(config, action);
if (!supervisionLoadInfoDto.succeed()) {//接口调用失败
return null;
......@@ -2660,6 +2678,14 @@ public class OrderChildServiceImpl implements OrderChildService {
loadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
carrierOrderChildDetailVO.setUnloadImageList(
unloadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
//货源地详细地址,目的地详细地址
FeignAddressVO data = addressFeign.getSendAndReceiveAddress(orderChild.getSendAddressId(), orderChild.getReceiveAddressId()).getData();
FeignAddressVO.Address sendAddress = data.getSendAddress();
FeignAddressVO.Address receiveAddress = data.getReceiveAddress();
carrierOrderChildDetailVO.setSendDetailAddress(sendAddress.getAddress());
carrierOrderChildDetailVO.setReceiveDetailAddress(receiveAddress.getAddress());
return carrierOrderChildDetailVO;
}
......
......@@ -198,6 +198,14 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
orderGoodsVO.setGoodsOrderDetailShow(1);
}
//目的地信息
orderGoodsVO.setReceiveContact(orderInfoFeign.getReveiveContact());
orderGoodsVO.setReceiveContactPhone(orderInfoFeign.getReveiveContactPhone());
orderGoodsVO.setReceiveWaitSystem(orderInfoFeign.getReveiveWaitSystem());
orderGoodsVO.setReceiveWaitSystemName(orderInfoFeign.getReveiveWaitSystemName());
orderGoodsVO.setReceiveWaitMode(orderInfoFeign.getReveiveWaitMode());
return orderGoodsVO;
}
......
......@@ -31,10 +31,15 @@ import com.clx.performance.model.PerformanceProgress;
import com.clx.performance.model.PerformanceProgressLog;
import com.clx.performance.param.pc.carrier.PagePerformanceProgress;
import com.clx.performance.param.pc.carrier.UpdatePerformanceProgressParam;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.PerformanceProgressLogService;
import com.clx.performance.service.PerformanceProgressService;
import com.clx.performance.struct.PerformanceProgressLogStruct;
import com.clx.performance.struct.PerformanceProgressStruct;
import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.utils.gd.GdService;
import com.clx.performance.vo.pc.PerformanceProgressDetailVO;
import com.clx.performance.vo.pc.PerformanceProgressOperationLogVO;
......@@ -49,6 +54,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -80,7 +86,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
private final OrderService orderService;
private final ThirdAppConfig thirdAppConfig;
private final OrderFeign orderFeign;
private final OrderGoodsService orderGoodsService;
public static List<Integer> inProcessStatusList;
public static List<Integer> endStatusList ;
public static List<Integer> allStatusList ;
......@@ -447,6 +453,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
firstPendingTime = item.getPendingOrderTime();
pendingWeight = pendingWeight.add(item.getExtractWeight());
}
PerformanceProgress update = new PerformanceProgress();
update.setId(optional.get().getId());
......@@ -531,6 +538,103 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
return performanceProgressStruct.convertList(performanceProgressDao.listInField(PerformanceProgress::getOrderNo, orderNoList));
}
@Override
public SXSSFWorkbook exportPerformanceProgress(PagePerformanceProgress param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<PerformanceProgressVO> page = pagePerformanceProgress(param);
List<PerformanceProgressVO> list = page.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "序号", "index", 2000));
fieldList.add(new ExcelField(1, "货源地", "sendAddressShorter", 5000));
fieldList.add(new ExcelField(2, "标准地址", "sendSystemAddressShorter", 5000));
fieldList.add(new ExcelField(3, "物流经理", "seniorLogisticsManagerName", 5000));
fieldList.add(new ExcelField(4, "货物类型", "goodsTypeName", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "煤源位置", "sendAddress", 5000));
fieldList.add(new ExcelField(7, "是否C类煤源", "sendOverStandardMsg", 5000));
fieldList.add(new ExcelField(8, "司机运费(元/吨)", "driverFreightPrice", 5000));
fieldList.add(new ExcelField(9, "任务吨数(吨)", "taskWeight", 5000));
fieldList.add(new ExcelField(10, "挂单吨数(吨)", "pendingWeight", 5000));
fieldList.add(new ExcelField(11, "接单车数", "orderedTruckNum", 5000));
fieldList.add(new ExcelField(12, "到达货源地车数", "arriveSendTruckNum", 5000));
fieldList.add(new ExcelField(13, "装车车数", "loadTruckNum", 5000));
fieldList.add(new ExcelField(14, "卸车车数", "unloadTruckNum", 5000));
fieldList.add(new ExcelField(15, "在途车数", "onTheWayTruckNum", 5000));
fieldList.add(new ExcelField(16, "接单率(%)", "orderedRate", 5000));
fieldList.add(new ExcelField(17, "任务完成率(%)", "taskCompleteRatio", 5000));
fieldList.add(new ExcelField(18, "矿发量(吨)", "sumLoadWeight", 5000));
fieldList.add(new ExcelField(19, "到站量(吨)", "sumUnloadWeight", 5000));
fieldList.add(new ExcelField(20, "在途量(吨)", "sumOnTheWayWeight", 5000));
fieldList.add(new ExcelField(21, "今日预计完成(吨)", "todayExpectComplete", 5000));
fieldList.add(new ExcelField(22, "异常备注", "abnormalRemark", 5000));
fieldList.add(new ExcelField(23, "履约异常原因", "performanceAbnormalReason", 5000));
fieldList.add(new ExcelField(24, "调度备注/跟进措施", "dispatchFollow", 5000));
fieldList.add(new ExcelField(25, "重车运距(公里)", "orderDistance", 5000));
fieldList.add(new ExcelField(26, "可拉运时间段", "transportTimeSlot", 5000));
fieldList.add(new ExcelField(27, "挂单时间", "pendingTime", 5000));
fieldList.add(new ExcelField(28, "交易要求到站时间", "tradeRequireArriveStationTime", 5000));
fieldList.add(new ExcelField(29, "物流预计到站时间", "transportExpectArriveStationTime", 5000));
fieldList.add(new ExcelField(30, "测算运费", "predictionFreightPrice", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (int i=0; i<list.size(); i++){
PerformanceProgressVO vo = list.get(i);
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(i+1));
rowData.add(new ExcelData(vo.getSendAddressShorter()));
rowData.add(new ExcelData(vo.getSendSystemAddressShorter()));
rowData.add(new ExcelData(vo.getSeniorLogisticsManagerName()));
rowData.add(new ExcelData(vo.getGoodsTypeName()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getSendAddress()));
rowData.add(new ExcelData(vo.getSendOverStandardMsg()));
rowData.add(new ExcelData(vo.getDriverFreightPrice()==null?null:vo.getDriverFreightPrice().movePointLeft(2)));
rowData.add(new ExcelData(vo.getTaskWeight()));
rowData.add(new ExcelData(vo.getPendingWeight()));
rowData.add(new ExcelData(vo.getOrderedTruckNum()));
rowData.add(new ExcelData(vo.getArriveSendTruckNum()));
rowData.add(new ExcelData(vo.getLoadTruckNum()));
rowData.add(new ExcelData(vo.getUnloadTruckNum()));
rowData.add(new ExcelData(vo.getOnTheWayTruckNum()));
rowData.add(new ExcelData(vo.getOrderedRate()));
rowData.add(new ExcelData(vo.getTaskCompleteRatio()));
rowData.add(new ExcelData(vo.getSumLoadWeight()));
rowData.add(new ExcelData(vo.getSumUnloadWeight()));
rowData.add(new ExcelData(vo.getSumOnTheWayWeight()));
rowData.add(new ExcelData(vo.getTodayExpectComplete()));
rowData.add(new ExcelData(vo.getAbnormalRemark()));
rowData.add(new ExcelData(vo.getPerformanceAbnormalReason()));
rowData.add(new ExcelData(vo.getDispatchFollow()));
rowData.add(new ExcelData(vo.getOrderDistance()+""));
rowData.add(new ExcelData(vo.getTransportTimeSlot()));
rowData.add(new ExcelData(vo.getPendingTime()));
rowData.add(new ExcelData(vo.getTradeRequireArriveStationTime()));
rowData.add(new ExcelData(vo.getTransportExpectArriveStationTime()));
rowData.add(new ExcelData(vo.getPredictionFreightPrice()==null?null:vo.getPredictionFreightPrice().movePointLeft(2)));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("履约进度", "履约进度", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
// 计算接单率
public BigDecimal calcOrderedRate(BigDecimal orderedWeight,BigDecimal pendingWeight){
//接单率 = 接单吨数 / 挂单吨数
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论