应付配置文件导入保存该文件
This commit is contained in:
+13
@@ -21,6 +21,7 @@ import com.bms.common.core.domain.AjaxResult;
|
||||
import com.bms.common.core.page.TableDataInfo;
|
||||
import com.bms.common.enums.BusinessType;
|
||||
import com.bms.common.exception.ServiceException;
|
||||
import com.bms.common.utils.file.FileUtils;
|
||||
import com.bms.common.utils.poi.ExcelUtil;
|
||||
import com.bms.price.domain.ChannelProductMap;
|
||||
import com.bms.price.domain.PayProduct;
|
||||
@@ -86,6 +87,18 @@ public class PayProductController extends BaseController
|
||||
return success(payOrderCostService.generate(billId));
|
||||
}
|
||||
|
||||
/** 下载某一版导入时上传的源文件 */
|
||||
@PreAuthorize("@ss.hasPermi('price:pay:query')")
|
||||
@PostMapping("/{productId}/source")
|
||||
public void downloadSource(@PathVariable Long productId, HttpServletResponse response) throws Exception
|
||||
{
|
||||
String filename = payProductService.sourceFileName(productId);
|
||||
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
FileUtils.setAttachmentResponseHeader(response, filename);
|
||||
payProductService.writeSource(productId, response.getOutputStream());
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('price:pay:query')")
|
||||
@GetMapping("/{productId}")
|
||||
public AjaxResult getInfo(@PathVariable Long productId)
|
||||
|
||||
@@ -52,6 +52,7 @@ class PayWorkbookParserTest
|
||||
.filter(fee -> "高风险地区附加费".equals(fee.getFeeName()) && "AF".equals(fee.getCalcParam())).findFirst().orElseThrow();
|
||||
assertEquals("Afghanistan", afghan.getZoneName());
|
||||
assertEquals("RMB", afghan.getCurrency());
|
||||
assertEquals("RMB/KG", afghan.getPriceUnit());
|
||||
assertTrue(afghan.getChargeText().contains("10.4") && afghan.getChargeText().contains("RMB/kg"));
|
||||
assertTrue(decimalFee(afghan, "10.4"));
|
||||
assertEquals("MANUAL", afghan.getCalcRule());
|
||||
@@ -532,6 +533,40 @@ class PayWorkbookParserTest
|
||||
assertTrue(ctt.getWeightBands().stream().noneMatch(band -> band.getWeightLabel() != null && band.getWeightLabel().contains("预估")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void posteItalianeKeepsTwoDeliveryServicesAndSizeRules() throws Exception
|
||||
{
|
||||
Path file = Path.of("D:/payment/PosteItaliane.xlsx");
|
||||
Assumptions.assumeTrue(Files.exists(file));
|
||||
PayPreview preview = parser.parseMatched(Files.readAllBytes(file), file.getFileName().toString(), null, List.of("PosteItaliane"));
|
||||
PayProduct poste = preview.getProducts().get(0);
|
||||
assertEquals("OK", poste.getParseStatus());
|
||||
assertEquals(18, poste.getWeightBands().size(), poste.getWeightBands().stream()
|
||||
.map(band -> band.getChargeName() + "/" + band.getZoneName() + "/" + band.getWeightLabel() + "/" + band.getPrice())
|
||||
.toList().toString());
|
||||
assertEquals(9, poste.getWeightBands().stream().filter(band -> "派送费 Crono Express".equals(band.getChargeName())).count());
|
||||
assertEquals(9, poste.getWeightBands().stream().filter(band -> "派送费 Crono".equals(band.getChargeName())).count());
|
||||
assertTrue(poste.getWeightBands().stream().anyMatch(band -> "派送费 Crono Express".equals(band.getChargeName())
|
||||
&& "City".equals(band.getZoneName()) && band.getWeightLabel().contains("0") && decimal(band, "3")
|
||||
&& "EUR/ITEM".equals(band.getPriceUnit()) && "意大利(IT)".equals(band.getCountryName()) && "IT".equals(band.getCountryCode())));
|
||||
assertTrue(poste.getWeightBands().stream().anyMatch(band -> "派送费 Crono Express".equals(band.getChargeName())
|
||||
&& "Province".equals(band.getZoneName()) && band.getWeightLabel().contains("5") && decimal(band, "6.63")));
|
||||
assertTrue(poste.getWeightBands().stream().anyMatch(band -> "派送费 Crono".equals(band.getChargeName())
|
||||
&& "Rural".equals(band.getZoneName()) && band.getWeightLabel().contains("2") && decimal(band, "4.38")
|
||||
&& "意大利(IT)".equals(band.getCountryName())));
|
||||
assertTrue(poste.getWeightBands().stream().anyMatch(band -> "派送费 Crono".equals(band.getChargeName())
|
||||
&& "Province".equals(band.getZoneName()) && band.getWeightLabel().contains("5") && decimal(band, "5.83")));
|
||||
assertTrue(poste.getExtraLines().stream().anyMatch(line -> "配置".equals(line.getLineType())
|
||||
&& line.getLineText().contains("尺寸限制") && line.getLineText().contains("长+宽+高≤130cm")
|
||||
&& line.getLineText().contains("最长边≤60cm")));
|
||||
assertTrue(poste.getExtraLines().stream().anyMatch(line -> line.getLineText().contains("计费说明") && line.getLineText().contains("计费重")));
|
||||
assertTrue(poste.getSurcharges().stream().anyMatch(fee -> "销毁费".equals(fee.getFeeName()) && decimalFee(fee, "0.2")
|
||||
&& "EUR/ITEM".equals(fee.getPriceUnit()) && "产生时收取".equals(fee.getChargeTiming())));
|
||||
assertTrue(poste.getSurcharges().stream().anyMatch(fee -> "退件重派费".equals(fee.getFeeName())
|
||||
&& fee.getChargeText().contains("同正向运费") && "产生时收取".equals(fee.getChargeTiming())));
|
||||
assertTrue(poste.getSurcharges().stream().filter(fee -> "产生时收取".equals(fee.getChargeTiming())).count() >= 6);
|
||||
}
|
||||
|
||||
private PayPreview parse(String prefix) throws Exception
|
||||
{
|
||||
Path dir = Path.of("D:/应付供应商");
|
||||
@@ -557,7 +592,8 @@ class PayWorkbookParserTest
|
||||
&& "速递运费".equals(band.getChargeName()) && decimal(band, "0.23") && "EUR/KG".equals(band.getPriceUnit())));
|
||||
assertTrue(dhl.getServiceNote() != null && dhl.getServiceNote().contains("报价已含燃油"));
|
||||
assertTrue(dhl.getSurcharges().stream().anyMatch(fee -> "其他费用".equals(fee.getSectionName())
|
||||
&& "道路通行费".equals(fee.getFeeName()) && decimalFee(fee, "0.19")));
|
||||
&& "道路通行费".equals(fee.getFeeName()) && decimalFee(fee, "0.19")
|
||||
&& "EUR".equals(fee.getCurrency()) && "EUR/ITEM".equals(fee.getPriceUnit())));
|
||||
assertTrue(dhl.getSurcharges().stream().anyMatch(fee -> "旺季附加费".equals(fee.getFeeName()) && decimalFee(fee, "0.19")
|
||||
&& fee.getEffectiveStart() != null));
|
||||
assertTrue(dhl.getSurcharges().stream().anyMatch(fee -> "高峰旺季附加费".equals(fee.getFeeName()) && decimalFee(fee, "0.5")));
|
||||
|
||||
Reference in New Issue
Block a user