Commit 0ad74933c11117a28bfb3565e2bc22c7af295abd

Authored by 房远帅
1 parent cd2889ad

报表:各办事处月度统计梳理-办事处筛选条件

@@ -108,18 +108,32 @@ public class ShipmentQuantityIndustryStatisticsServiceImpl implements ShipmentQu @@ -108,18 +108,32 @@ public class ShipmentQuantityIndustryStatisticsServiceImpl implements ShipmentQu
108 } 108 }
109 109
110 private List<ShipmentQuantityIndustryStatisticsDto> buildFilledList(QueryShipmentQuantityIndustryStatisticsVo vo) { 110 private List<ShipmentQuantityIndustryStatisticsDto> buildFilledList(QueryShipmentQuantityIndustryStatisticsVo vo) {
111 - ShipmentQuantityStatisticsDateRangeDto dateRange = shipmentQuantityIndustryStatisticsMapper.queryDateRange(vo);  
112 - if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) {  
113 - return new ArrayList<>();  
114 - }  
115 -  
116 - LocalDate startDate = parseOrDefault(vo.getShipmentDateStart(), dateRange.getStartDate());  
117 - LocalDate endDateDefault = dateRange.getEndDate(); 111 + LocalDate startDate = parse(vo.getShipmentDateStart());
  112 + LocalDate endDate = parse(vo.getShipmentDateEnd());
118 LocalDate today = LocalDate.now(); 113 LocalDate today = LocalDate.now();
119 - if (endDateDefault.isBefore(today)) {  
120 - endDateDefault = today; 114 +
  115 + if (startDate == null && endDate == null) {
  116 + ShipmentQuantityStatisticsDateRangeDto dateRange = queryDateRangeWithFallback(vo);
  117 + if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) {
  118 + startDate = today;
  119 + endDate = today;
  120 + } else {
  121 + startDate = dateRange.getStartDate();
  122 + LocalDate endDateDefault = dateRange.getEndDate();
  123 + if (endDateDefault.isBefore(today)) {
  124 + endDateDefault = today;
  125 + }
  126 + endDate = endDateDefault;
  127 + }
  128 + } else {
  129 + if (startDate == null) {
  130 + startDate = endDate;
  131 + }
  132 + if (endDate == null) {
  133 + endDate = startDate;
  134 + }
121 } 135 }
122 - LocalDate endDate = parseOrDefault(vo.getShipmentDateEnd(), endDateDefault); 136 +
123 if (startDate == null || endDate == null || endDate.isBefore(startDate)) { 137 if (startDate == null || endDate == null || endDate.isBefore(startDate)) {
124 return new ArrayList<>(); 138 return new ArrayList<>();
125 } 139 }
@@ -206,6 +220,48 @@ public class ShipmentQuantityIndustryStatisticsServiceImpl implements ShipmentQu @@ -206,6 +220,48 @@ public class ShipmentQuantityIndustryStatisticsServiceImpl implements ShipmentQu
206 return date + "|" + industry + "|" + workshopId; 220 return date + "|" + industry + "|" + workshopId;
207 } 221 }
208 222
  223 + private ShipmentQuantityStatisticsDateRangeDto queryDateRangeWithFallback(QueryShipmentQuantityIndustryStatisticsVo vo) {
  224 + ShipmentQuantityStatisticsDateRangeDto dateRange = shipmentQuantityIndustryStatisticsMapper.queryDateRange(vo);
  225 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  226 + return dateRange;
  227 + }
  228 +
  229 + String industry = vo.getIndustry();
  230 + String workshopId = vo.getWorkshopId();
  231 +
  232 + if (StringUtils.isNotBlank(industry)) {
  233 + QueryShipmentQuantityIndustryStatisticsVo v = new QueryShipmentQuantityIndustryStatisticsVo();
  234 + v.setWorkshopId(workshopId);
  235 + dateRange = shipmentQuantityIndustryStatisticsMapper.queryDateRange(v);
  236 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  237 + return dateRange;
  238 + }
  239 + }
  240 +
  241 + if (StringUtils.isNotBlank(workshopId)) {
  242 + QueryShipmentQuantityIndustryStatisticsVo v = new QueryShipmentQuantityIndustryStatisticsVo();
  243 + v.setIndustry(industry);
  244 + dateRange = shipmentQuantityIndustryStatisticsMapper.queryDateRange(v);
  245 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  246 + return dateRange;
  247 + }
  248 + }
  249 +
  250 + QueryShipmentQuantityIndustryStatisticsVo v = new QueryShipmentQuantityIndustryStatisticsVo();
  251 + return shipmentQuantityIndustryStatisticsMapper.queryDateRange(v);
  252 + }
  253 +
  254 + private static LocalDate parse(String dateStr) {
  255 + if (StringUtils.isBlank(dateStr)) {
  256 + return null;
  257 + }
  258 + try {
  259 + return LocalDate.parse(dateStr, DATE_FORMATTER);
  260 + } catch (Exception e) {
  261 + return null;
  262 + }
  263 + }
  264 +
209 private static LocalDate parseOrDefault(String dateStr, LocalDate defaultValue) { 265 private static LocalDate parseOrDefault(String dateStr, LocalDate defaultValue) {
210 if (StringUtils.isBlank(dateStr)) { 266 if (StringUtils.isBlank(dateStr)) {
211 return defaultValue; 267 return defaultValue;
@@ -109,18 +109,32 @@ public class ShipmentQuantityStatisticsServiceImpl implements ShipmentQuantitySt @@ -109,18 +109,32 @@ public class ShipmentQuantityStatisticsServiceImpl implements ShipmentQuantitySt
109 } 109 }
110 110
111 private List<ShipmentQuantityStatisticsDto> buildFilledList(QueryShipmentQuantityStatisticsVo vo) { 111 private List<ShipmentQuantityStatisticsDto> buildFilledList(QueryShipmentQuantityStatisticsVo vo) {
112 - ShipmentQuantityStatisticsDateRangeDto dateRange = shipmentQuantityStatisticsMapper.queryDateRange(vo);  
113 - if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) {  
114 - return new ArrayList<>();  
115 - }  
116 -  
117 - LocalDate startDate = parseOrDefault(vo.getShipmentDateStart(), dateRange.getStartDate());  
118 - LocalDate endDateDefault = dateRange.getEndDate(); 112 + LocalDate startDate = parse(vo.getShipmentDateStart());
  113 + LocalDate endDate = parse(vo.getShipmentDateEnd());
119 LocalDate today = LocalDate.now(); 114 LocalDate today = LocalDate.now();
120 - if (endDateDefault.isBefore(today)) {  
121 - endDateDefault = today; 115 +
  116 + if (startDate == null && endDate == null) {
  117 + ShipmentQuantityStatisticsDateRangeDto dateRange = queryDateRangeWithFallback(vo);
  118 + if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) {
  119 + startDate = today;
  120 + endDate = today;
  121 + } else {
  122 + startDate = dateRange.getStartDate();
  123 + LocalDate endDateDefault = dateRange.getEndDate();
  124 + if (endDateDefault.isBefore(today)) {
  125 + endDateDefault = today;
  126 + }
  127 + endDate = endDateDefault;
  128 + }
  129 + } else {
  130 + if (startDate == null) {
  131 + startDate = endDate;
  132 + }
  133 + if (endDate == null) {
  134 + endDate = startDate;
  135 + }
122 } 136 }
123 - LocalDate endDate = parseOrDefault(vo.getShipmentDateEnd(), endDateDefault); 137 +
124 if (startDate == null || endDate == null || endDate.isBefore(startDate)) { 138 if (startDate == null || endDate == null || endDate.isBefore(startDate)) {
125 return new ArrayList<>(); 139 return new ArrayList<>();
126 } 140 }
@@ -222,6 +236,48 @@ public class ShipmentQuantityStatisticsServiceImpl implements ShipmentQuantitySt @@ -222,6 +236,48 @@ public class ShipmentQuantityStatisticsServiceImpl implements ShipmentQuantitySt
222 return date + "|" + deptId + "|" + workshopId; 236 return date + "|" + deptId + "|" + workshopId;
223 } 237 }
224 238
  239 + private ShipmentQuantityStatisticsDateRangeDto queryDateRangeWithFallback(QueryShipmentQuantityStatisticsVo vo) {
  240 + ShipmentQuantityStatisticsDateRangeDto dateRange = shipmentQuantityStatisticsMapper.queryDateRange(vo);
  241 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  242 + return dateRange;
  243 + }
  244 +
  245 + String deptId = vo.getDeptId();
  246 + String workshopId = vo.getWorkshopId();
  247 +
  248 + if (StringUtils.isNotBlank(deptId)) {
  249 + QueryShipmentQuantityStatisticsVo v = new QueryShipmentQuantityStatisticsVo();
  250 + v.setWorkshopId(workshopId);
  251 + dateRange = shipmentQuantityStatisticsMapper.queryDateRange(v);
  252 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  253 + return dateRange;
  254 + }
  255 + }
  256 +
  257 + if (StringUtils.isNotBlank(workshopId)) {
  258 + QueryShipmentQuantityStatisticsVo v = new QueryShipmentQuantityStatisticsVo();
  259 + v.setDeptId(deptId);
  260 + dateRange = shipmentQuantityStatisticsMapper.queryDateRange(v);
  261 + if (dateRange != null && dateRange.getStartDate() != null && dateRange.getEndDate() != null) {
  262 + return dateRange;
  263 + }
  264 + }
  265 +
  266 + QueryShipmentQuantityStatisticsVo v = new QueryShipmentQuantityStatisticsVo();
  267 + return shipmentQuantityStatisticsMapper.queryDateRange(v);
  268 + }
  269 +
  270 + private static LocalDate parse(String dateStr) {
  271 + if (StringUtils.isBlank(dateStr)) {
  272 + return null;
  273 + }
  274 + try {
  275 + return LocalDate.parse(dateStr, DATE_FORMATTER);
  276 + } catch (Exception e) {
  277 + return null;
  278 + }
  279 + }
  280 +
225 private static LocalDate parseOrDefault(String dateStr, LocalDate defaultValue) { 281 private static LocalDate parseOrDefault(String dateStr, LocalDate defaultValue) {
226 if (StringUtils.isBlank(dateStr)) { 282 if (StringUtils.isBlank(dateStr)) {
227 return defaultValue; 283 return defaultValue;