增加可修改计费重功能

This commit is contained in:
wuweihua
2026-10-14 15:25:26 +08:00
parent 2d7bd678f3
commit 6a50b0f122
16 changed files with 1306 additions and 10 deletions
@@ -4,6 +4,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.bms.common.annotation.Log;
import com.bms.common.core.controller.BaseController;
import com.bms.common.core.domain.AjaxResult;
@@ -24,13 +26,18 @@ import com.bms.common.enums.BusinessType;
import com.bms.common.utils.DateUtils;
import com.bms.common.utils.MessageUtils;
import com.bms.common.utils.StringUtils;
import com.bms.common.utils.poi.ExcelUtil;
import com.bms.price.domain.BatchAddIncomeBillFeeTask;
import com.bms.price.domain.ChargeWeightImportTask;
import com.bms.price.domain.PrcBillingTask;
import com.bms.price.domain.PrcOrderBill;
import com.bms.price.domain.PrcQuote;
import com.bms.price.domain.vo.AddIncomeBillFeeRequest;
import com.bms.price.domain.vo.BatchAddIncomeBillFeeRequest;
import com.bms.price.domain.vo.BillingTaskSubmitRequest;
import com.bms.price.domain.vo.ChargeWeightImportRow;
import com.bms.price.domain.vo.ChargeWeightTemplateRequest;
import com.bms.price.domain.vo.UpdateChargeWeightRequest;
import com.bms.price.domain.vo.UpdateIncomeBillFeeRequest;
import com.bms.price.domain.vo.TmsPriceBillRequest;
import com.bms.price.domain.vo.TmsPriceQuoteRequest;
@@ -312,4 +319,64 @@ public class BillingController extends BaseController
TmsPriceQuoteResult result = prcOrderBillService.bill(request);
return success(result);
}
/** Update charge_weight (keep weight), then rebill. */
@PreAuthorize("@ss.hasPermi('price:billing:chargeWeightEdit')")
@Log(title = "Billing charge weight", businessType = BusinessType.UPDATE)
@PutMapping("/bill/chargeWeight")
public AjaxResult updateChargeWeight(@Validated @RequestBody UpdateChargeWeightRequest request)
{
return success(prcOrderBillService.updateChargeWeight(request.getBillId(), request.getChargeWeight()));
}
/**
* Download import template. fillByFilter=true fills orderNo/customer from list filters.
*/
@PreAuthorize("@ss.hasPermi('price:billing:chargeWeightEdit')")
@PostMapping("/bill/chargeWeight/importTemplate")
public void importChargeWeightTemplate(HttpServletResponse response,
@RequestBody(required = false) ChargeWeightTemplateRequest request)
{
if (request == null)
{
request = new ChargeWeightTemplateRequest();
}
List<ChargeWeightImportRow> rows = prcOrderBillService.buildChargeWeightTemplateRows(request);
ExcelUtil<ChargeWeightImportRow> util = new ExcelUtil<ChargeWeightImportRow>(ChargeWeightImportRow.class);
if (rows == null || rows.isEmpty())
{
util.importTemplateExcel(response, "charge_weight");
return;
}
util.exportExcel(response, rows, "charge_weight");
}
/**
* Async import charge_weight updates and rebill.
* Returns taskId; poll /bill/chargeWeight/import/task/{taskId}.
*/
@PreAuthorize("@ss.hasPermi('price:billing:chargeWeightEdit')")
@Log(title = "Billing charge weight import", businessType = BusinessType.IMPORT)
@PostMapping("/bill/chargeWeight/importData")
public AjaxResult importChargeWeight(MultipartFile file) throws Exception
{
ExcelUtil<ChargeWeightImportRow> util = new ExcelUtil<ChargeWeightImportRow>(ChargeWeightImportRow.class);
List<ChargeWeightImportRow> rows = util.importExcel(file.getInputStream());
String taskId = prcOrderBillService.submitImportChargeWeight(rows);
Map<String, Object> payload = new HashMap<String, Object>();
payload.put("taskId", taskId);
return success(payload);
}
@PreAuthorize("@ss.hasPermi('price:billing:chargeWeightEdit')")
@GetMapping("/bill/chargeWeight/import/task/{taskId}")
public AjaxResult getChargeWeightImportTask(@PathVariable String taskId)
{
ChargeWeightImportTask task = prcOrderBillService.getChargeWeightImportTask(taskId);
if (task == null)
{
return error(MessageUtils.message("price.bill.fee.batch.taskNotExists"));
}
return success(task);
}
}