Merge pull request 'develop' (#1) from develop into master
Reviewed-on: http://git.xdadan.loc/tanex/emis-service/pulls/1
This commit is contained in:
commit
b6873d718a
@ -17,9 +17,11 @@ import java.math.BigDecimal;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.io.resource.ResourceUtil;
|
import cn.hutool.core.io.resource.ResourceUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
@ -27,29 +29,26 @@ import com.alibaba.excel.ExcelWriter;
|
|||||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||||
import com.alibaba.excel.util.MapUtils;
|
import com.alibaba.excel.util.MapUtils;
|
||||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||||
|
import com.alibaba.excel.write.metadata.WriteTable;
|
||||||
import com.alibaba.excel.write.metadata.fill.FillConfig;
|
import com.alibaba.excel.write.metadata.fill.FillConfig;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||||
|
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.beust.jcommander.internal.Lists;
|
||||||
import com.xdadan.erp.common.utils.DateUtils;
|
import com.xdadan.erp.common.utils.DateUtils;
|
||||||
import com.xdadan.erp.common.utils.DictUtils;
|
import com.xdadan.erp.common.utils.DictUtils;
|
||||||
import com.xdadan.erp.emis.domain.EmisExchangeRate;
|
import com.xdadan.erp.emis.domain.*;
|
||||||
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
|
|
||||||
import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
|
|
||||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
|
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
|
||||||
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
||||||
import com.xdadan.erp.emis.domain.vo.scan.ScanResult;
|
import com.xdadan.erp.emis.mapper.EmisSettleSubBillFeeitemMapper;
|
||||||
import com.xdadan.erp.emis.service.EmisBaseService;
|
import com.xdadan.erp.emis.service.*;
|
||||||
import com.xdadan.erp.emis.service.IEmisExchangeRateService;
|
import com.xdadan.erp.emis.service.test.CustomCellWriteHandler;
|
||||||
import com.xdadan.erp.emis.service.IEmisSettleBillPayLogService;
|
|
||||||
import com.xdadan.erp.emis.service.billexport.ExcelUtils;
|
|
||||||
import com.xdadan.erp.emis.service.billexport.MapObjectUtil;
|
|
||||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||||
import org.apache.commons.io.Charsets;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
@ -67,9 +66,7 @@ import com.xdadan.erp.common.core.domain.AjaxResult;
|
|||||||
import com.xdadan.erp.common.core.page.TableDataInfo;
|
import com.xdadan.erp.common.core.page.TableDataInfo;
|
||||||
import com.xdadan.erp.common.enums.BusinessType;
|
import com.xdadan.erp.common.enums.BusinessType;
|
||||||
import com.xdadan.erp.common.utils.poi.ExcelUtil;
|
import com.xdadan.erp.common.utils.poi.ExcelUtil;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import com.xdadan.erp.emis.domain.EmisSettleBill;
|
|
||||||
import com.xdadan.erp.emis.service.IEmisSettleBillService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算总账单Controller
|
* 结算总账单Controller
|
||||||
@ -511,6 +508,13 @@ public class EmisSettleBillController extends BaseController
|
|||||||
return AjaxResult.success("确认成功");
|
return AjaxResult.success("确认成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Log(title = "导出海运账单", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/exportSeaWayBill")
|
||||||
|
public void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill) {
|
||||||
|
|
||||||
|
emisSettleBillService.exportSeaWayBill(response, emisSettleBill);
|
||||||
|
}
|
||||||
|
|
||||||
@Log(title = "导出账单", businessType = BusinessType.EXPORT)
|
@Log(title = "导出账单", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/exportBill")
|
@PostMapping("/exportBill")
|
||||||
public void exportBill(HttpServletResponse response, EmisSettleBill emisSettleBill)
|
public void exportBill(HttpServletResponse response, EmisSettleBill emisSettleBill)
|
||||||
|
|||||||
@ -0,0 +1,77 @@
|
|||||||
|
package com.xdadan.erp.web.emis;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.xdadan.erp.common.annotation.Log;
|
||||||
|
import com.xdadan.erp.common.core.controller.BaseController;
|
||||||
|
import com.xdadan.erp.common.core.domain.AjaxResult;
|
||||||
|
import com.xdadan.erp.common.core.page.TableDataInfo;
|
||||||
|
import com.xdadan.erp.common.enums.BusinessType;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditCustomer;
|
||||||
|
import com.xdadan.erp.emis.service.IEmisTempCreditCustomerService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户临时额度Controller
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/emis/emisTempCreditCustomer")
|
||||||
|
public class EmisTempCreditCustomerController extends BaseController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IEmisTempCreditCustomerService emisTempCreditCustomerService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询客户临时额度列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditCustomer:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(EmisTempCreditCustomer emisTempCreditCustomer) {
|
||||||
|
startPage();
|
||||||
|
List<EmisTempCreditCustomer> list = emisTempCreditCustomerService
|
||||||
|
.selectEmisTempCreditCustomerList(emisTempCreditCustomer);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增客户临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditCustomer:add')")
|
||||||
|
@Log(title = "客户临时额度", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping
|
||||||
|
public AjaxResult add(@RequestBody EmisTempCreditCustomer emisTempCreditCustomer) {
|
||||||
|
try {
|
||||||
|
return toAjax(emisTempCreditCustomerService.insertEmisTempCreditCustomer(emisTempCreditCustomer));
|
||||||
|
} catch (Exception e) {
|
||||||
|
return error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改客户临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditCustomer:edit')")
|
||||||
|
@Log(title = "客户临时额度", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping
|
||||||
|
public AjaxResult edit(@RequestBody EmisTempCreditCustomer emisTempCreditCustomer) {
|
||||||
|
try {
|
||||||
|
return toAjax(emisTempCreditCustomerService.updateEmisTempCreditCustomer(emisTempCreditCustomer));
|
||||||
|
} catch (Exception e) {
|
||||||
|
return error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除客户临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditCustomer:remove')")
|
||||||
|
@Log(title = "客户临时额度", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
||||||
|
return toAjax(emisTempCreditCustomerService.deleteEmisTempCreditCustomerByIds(ids));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,104 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* @Project: emis
|
||||||
|
* @Title: EmisTempCreditSalesmenController.java
|
||||||
|
* @author linfso
|
||||||
|
* @date 2025-03-08 16:17:56
|
||||||
|
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||||
|
* @version v1.0
|
||||||
|
* @Description: <p> 销售临时额度 控制器 </p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.xdadan.erp.web.emis;
|
||||||
|
|
||||||
|
import com.xdadan.erp.common.annotation.Log;
|
||||||
|
import com.xdadan.erp.common.core.controller.BaseController;
|
||||||
|
import com.xdadan.erp.common.core.domain.AjaxResult;
|
||||||
|
import com.xdadan.erp.common.core.page.TableDataInfo;
|
||||||
|
import com.xdadan.erp.common.enums.BusinessType;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen;
|
||||||
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
import com.xdadan.erp.emis.service.IEmisTempCreditSalesmenService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售临时额度Controller
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/emis/emisTempCreditSalesmen")
|
||||||
|
public class EmisTempCreditSalesmenController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private IEmisTempCreditSalesmenService emisTempCreditSalesmenService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询销售临时额度列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditSalesmen:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(EmisTempCreditSalesmen emisTempCreditSalesmen)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<EmisTempCreditSalesmen> list = emisTempCreditSalesmenService.selectEmisTempCreditSalesmenList(emisTempCreditSalesmen);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增销售临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditSalesmen:add')")
|
||||||
|
@Log(title = "销售临时额度", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping
|
||||||
|
public AjaxResult add(@RequestBody EmisTempCreditSalesmen emisTempCreditSalesmen)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return toAjax(emisTempCreditSalesmenService.insertEmisTempCreditSalesmen(emisTempCreditSalesmen));
|
||||||
|
}catch (Exception ex){
|
||||||
|
ex.printStackTrace();
|
||||||
|
// 返回子定义异常
|
||||||
|
if(ex instanceof EmisBizError){
|
||||||
|
return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode());
|
||||||
|
}
|
||||||
|
return AjaxResult.error("服务器异常,联系客服");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改销售临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditSalesmen:edit')")
|
||||||
|
@Log(title = "销售临时额度", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping
|
||||||
|
public AjaxResult edit(@RequestBody EmisTempCreditSalesmen emisTempCreditSalesmen)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return toAjax(emisTempCreditSalesmenService.updateEmisTempCreditSalesmen(emisTempCreditSalesmen));
|
||||||
|
}catch (Exception ex){
|
||||||
|
ex.printStackTrace();
|
||||||
|
// 返回子定义异常
|
||||||
|
if(ex instanceof EmisBizError){
|
||||||
|
return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode());
|
||||||
|
}
|
||||||
|
return AjaxResult.error("服务器异常,联系客服");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除销售临时额度
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('emis:emisTempCreditSalesmen:remove')")
|
||||||
|
@Log(title = "销售临时额度", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public AjaxResult remove(@PathVariable Long[] ids)
|
||||||
|
{
|
||||||
|
return toAjax(emisTempCreditSalesmenService.deleteEmisTempCreditSalesmenByIds(ids));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -537,6 +537,14 @@ public class EmisWaybillController extends EmisBaseController
|
|||||||
list = emisWaybillService.selectEmisWaybillList(emisWaybill);
|
list = emisWaybillService.selectEmisWaybillList(emisWaybill);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if("1".equals(emisWaybill.getQueryQuotaType())){
|
||||||
|
// 查询超期的运单列表
|
||||||
|
list = emisBaseService.filterOverTermEmisWaybillList(list);
|
||||||
|
}
|
||||||
|
if("2".equals(emisWaybill.getQueryQuotaType())){
|
||||||
|
// 查询未超期的账单列表
|
||||||
|
list = emisBaseService.filterInTermEmisWaybillList(list);
|
||||||
|
}
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,4 +65,6 @@ public class EmisCreditCustomer extends BaseEntity
|
|||||||
private String payee;
|
private String payee;
|
||||||
private String salesmen;
|
private String salesmen;
|
||||||
|
|
||||||
|
/** 临时额度总额 */
|
||||||
|
private BigDecimal tempCreditMoney;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,8 +41,14 @@ public class EmisCreditSalesmen extends BaseEntity
|
|||||||
private String salesmen;
|
private String salesmen;
|
||||||
/* 信用额度 */
|
/* 信用额度 */
|
||||||
private BigDecimal creditMoney;
|
private BigDecimal creditMoney;
|
||||||
|
/* 临时额度 */
|
||||||
|
private BigDecimal tempCreditMoney;
|
||||||
/* 使用额度 */
|
/* 使用额度 */
|
||||||
private BigDecimal useMoney;
|
private BigDecimal useMoney;
|
||||||
|
/* 超期额度 */
|
||||||
|
private BigDecimal overTermMoney;
|
||||||
|
/* 账期内额度 */
|
||||||
|
private BigDecimal inTermMoney;
|
||||||
/* 币种 */
|
/* 币种 */
|
||||||
private String currency;
|
private String currency;
|
||||||
/* 运输方式 */
|
/* 运输方式 */
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
package com.xdadan.erp.emis.domain;
|
||||||
|
|
||||||
|
import com.xdadan.erp.common.annotation.Excel;
|
||||||
|
import com.xdadan.erp.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户临时额度对象
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class EmisTempCreditCustomer extends BaseEntity {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** ID */
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 客户编码 */
|
||||||
|
private String accCode;
|
||||||
|
|
||||||
|
/** 月结客户名称 */
|
||||||
|
private String customerName;
|
||||||
|
|
||||||
|
/** 临时额度调整 */
|
||||||
|
private BigDecimal tempCreditMoneyAdjust;
|
||||||
|
|
||||||
|
/** 运输方式 **/
|
||||||
|
private String transType;
|
||||||
|
|
||||||
|
/** 开始日期 */
|
||||||
|
@Excel(name = "开始日期", dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/** 结束日期 */
|
||||||
|
@Excel(name = "结束日期", dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
package com.xdadan.erp.emis.domain;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import lombok.Data;
|
||||||
|
import com.xdadan.erp.common.annotation.Excel;
|
||||||
|
import com.xdadan.erp.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售临时额度对象 emis_temp_credit_salesmen
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class EmisTempCreditSalesmen extends BaseEntity {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 主键 */
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** 客户编码 */
|
||||||
|
private String accCode;
|
||||||
|
|
||||||
|
/** 销售员 */
|
||||||
|
private String salesmen;
|
||||||
|
|
||||||
|
/** 临时额度调整金额 */
|
||||||
|
private BigDecimal tempCreditMoneyAdjust;
|
||||||
|
|
||||||
|
/** 运输方式 **/
|
||||||
|
private String transType;
|
||||||
|
|
||||||
|
/** 开始日期 */
|
||||||
|
@Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date startDate;
|
||||||
|
|
||||||
|
/** 结束日期 */
|
||||||
|
@Excel(name = "结束日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date endDate;
|
||||||
|
|
||||||
|
}
|
||||||
@ -675,10 +675,32 @@ public class EmisWaybill extends BaseEntity
|
|||||||
private String customerNickName;
|
private String customerNickName;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String customerAvatar;
|
private String customerAvatar;
|
||||||
|
// 查询现金客户额度属性; 1:查询超期额度,2:查询账期内额度
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String queryQuotaType;
|
||||||
|
|
||||||
// transType - 运输类型
|
// transType - 运输类型
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String transType;
|
private String transType;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "提单号(记录海运提单信息)")
|
||||||
|
private String ladingBillCode ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "贵司编号(记录相关业务的贵司编号)")
|
||||||
|
private String companyCode ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "起运港")
|
||||||
|
private String departurePort ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "目的港")
|
||||||
|
private String destinationPort;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "箱量")
|
||||||
|
private String boxQuantity;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,85 @@
|
|||||||
|
/**
|
||||||
|
* @Project: emis
|
||||||
|
* @Title: EmisWaybill.java
|
||||||
|
* @author linfso
|
||||||
|
* @date 2024-04-11 05:48:01
|
||||||
|
* @Copyright: ShangHai Duta 2022 All rights reserved.
|
||||||
|
* @version v1.0
|
||||||
|
* @Description: <p> 运单列表 实体类 </p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.xdadan.erp.emis.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.xdadan.erp.common.annotation.audit.DataAuditField;
|
||||||
|
import com.xdadan.erp.common.annotation.audit.DataAuditTable;
|
||||||
|
import com.xdadan.erp.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName EmisWaybillAndFeeitem
|
||||||
|
* @Description 运单列表
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-03 11:48:01
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("emis_waybill")
|
||||||
|
@DataAuditTable(tableName = "emis_waybill",tableComment = "运单列表")
|
||||||
|
public class EmisWaybillAndFeeitem extends BaseEntity
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(value = "id",type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "探路者面单号")
|
||||||
|
private String billCode ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "提单号(记录海运提单信息)")
|
||||||
|
private String ladingBillCode ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "贵司编号(记录相关业务的贵司编号)")
|
||||||
|
private String companyCode ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "起运港")
|
||||||
|
private String departurePort ;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "目的港")
|
||||||
|
private String destinationPort;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "箱量")
|
||||||
|
private String boxQuantity;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "件数")
|
||||||
|
private Integer parcelQty;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "毛重")
|
||||||
|
private BigDecimal billWeight;
|
||||||
|
|
||||||
|
@TableField
|
||||||
|
@DataAuditField(fieldComment = "体积")
|
||||||
|
private BigDecimal totalVolume;
|
||||||
|
|
||||||
|
// 子账单费用明细信息
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<EmisSettleSubBillFeeitem> settleSubBillFeeitemList;
|
||||||
|
}
|
||||||
@ -367,6 +367,21 @@ public class WaybillOrder implements Serializable {
|
|||||||
/* 录单人 */
|
/* 录单人 */
|
||||||
private String registerManName;
|
private String registerManName;
|
||||||
|
|
||||||
|
/* 提单号(记录海运提单信息) */
|
||||||
|
private String ladingBillCode ;
|
||||||
|
|
||||||
|
/* 贵司编号(记录相关业务的贵司编号) */
|
||||||
|
private String companyCode ;
|
||||||
|
|
||||||
|
/* 起运港 */
|
||||||
|
private String departurePort ;
|
||||||
|
|
||||||
|
/* 目的港 */
|
||||||
|
private String destinationPort;
|
||||||
|
|
||||||
|
/* 箱量 */
|
||||||
|
private String boxQuantity;
|
||||||
|
|
||||||
// 销售,回款
|
// 销售,回款
|
||||||
// private String salesmenName;
|
// private String salesmenName;
|
||||||
// private String payeeName;
|
// private String payeeName;
|
||||||
@ -661,6 +676,12 @@ public class WaybillOrder implements Serializable {
|
|||||||
|
|
||||||
voItem.setOrderRemark(dbWaybill.getOrderRemark());
|
voItem.setOrderRemark(dbWaybill.getOrderRemark());
|
||||||
|
|
||||||
|
voItem.setLadingBillCode(dbWaybill.getLadingBillCode());
|
||||||
|
voItem.setCompanyCode(dbWaybill.getCompanyCode());
|
||||||
|
voItem.setDeparturePort(dbWaybill.getDeparturePort());
|
||||||
|
voItem.setDestinationPort(dbWaybill.getDestinationPort());
|
||||||
|
voItem.setBoxQuantity(dbWaybill.getBoxQuantity());
|
||||||
|
|
||||||
return voItem;
|
return voItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -880,6 +901,12 @@ public class WaybillOrder implements Serializable {
|
|||||||
dbWaybill.setOrderRemark(this.getOrderRemark());
|
dbWaybill.setOrderRemark(this.getOrderRemark());
|
||||||
dbWaybill.setExtInfo(this.getExtInfo());
|
dbWaybill.setExtInfo(this.getExtInfo());
|
||||||
|
|
||||||
|
dbWaybill.setLadingBillCode(this.getLadingBillCode());
|
||||||
|
dbWaybill.setCompanyCode(this.getCompanyCode());
|
||||||
|
dbWaybill.setDeparturePort(this.getDeparturePort());
|
||||||
|
dbWaybill.setDestinationPort(this.getDestinationPort());
|
||||||
|
dbWaybill.setBoxQuantity(this.getBoxQuantity());
|
||||||
|
|
||||||
return dbWaybill;
|
return dbWaybill;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -99,4 +99,12 @@ public interface EmisCreditCustomerMapper extends BaseMapper<EmisCreditCustomer>
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteEmisCreditCustomerByIds(Long[] ids);
|
public int deleteEmisCreditCustomerByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件查询客户信用额度信息
|
||||||
|
*
|
||||||
|
* @param emisCreditCustomer 客户信用额度
|
||||||
|
* @return 客户信用额度
|
||||||
|
*/
|
||||||
|
EmisCreditCustomer selectCreditCustomerInfo(EmisCreditCustomer emisCreditCustomer);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,10 @@ package com.xdadan.erp.emis.mapper;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
|
import com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisWaybill;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisWaybillAndFeeitem;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName EmisSettleSubBillFeeitemMapper
|
* @ClassName EmisSettleSubBillFeeitemMapper
|
||||||
* @Description <p> 子账单费用明细 Mapper 接口 </p>
|
* @Description <p> 子账单费用明细 Mapper 接口 </p>
|
||||||
@ -80,4 +84,6 @@ public interface EmisSettleSubBillFeeitemMapper extends BaseMapper<EmisSettleSub
|
|||||||
|
|
||||||
|
|
||||||
public int deleteEmisSettleSubBillFeeitemByBillCode(String billCode);
|
public int deleteEmisSettleSubBillFeeitemByBillCode(String billCode);
|
||||||
|
|
||||||
|
List<EmisWaybillAndFeeitem> selectEmisWaybillListByBillCodeList(@Param("billCodeList") List<String> billCodeList);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -156,4 +156,5 @@ public interface EmisSettleSubBillMapper extends BaseMapper<EmisSettleSubBill>
|
|||||||
|
|
||||||
public int deleteEmisSettleSubBillByBillCode(String billCode);
|
public int deleteEmisSettleSubBillByBillCode(String billCode);
|
||||||
|
|
||||||
|
List<EmisSettleSubBill> querysSettleSubBillByBillCodeList(@Param("billCodeList") List<String> billCodeList);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.xdadan.erp.emis.mapper;
|
||||||
|
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditCustomer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户临时额度Mapper接口
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
|
public interface EmisTempCreditCustomerMapper {
|
||||||
|
/**
|
||||||
|
* 查询客户临时额度
|
||||||
|
*
|
||||||
|
* @param id 客户临时额度主键
|
||||||
|
* @return 客户临时额度
|
||||||
|
*/
|
||||||
|
EmisTempCreditCustomer selectEmisTempCreditCustomerById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询客户临时额度列表
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 客户临时额度集合
|
||||||
|
*/
|
||||||
|
List<EmisTempCreditCustomer> selectEmisTempCreditCustomerList(EmisTempCreditCustomer emisTempCreditCustomer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int insertEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int updateEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除客户临时额度
|
||||||
|
*
|
||||||
|
* @param id 客户临时额度主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int deleteEmisTempCreditCustomerById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除客户临时额度
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的数据主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int deleteEmisTempCreditCustomerByIds(Long[] ids);
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.xdadan.erp.emis.mapper;
|
||||||
|
|
||||||
|
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售临时额度Mapper接口
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15
|
||||||
|
*/
|
||||||
|
public interface EmisTempCreditSalesmenMapper {
|
||||||
|
/**
|
||||||
|
* 新增销售临时额度
|
||||||
|
*/
|
||||||
|
public int insertEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询销售临时额度列表
|
||||||
|
*/
|
||||||
|
public List<EmisTempCreditSalesmen> selectEmisTempCreditSalesmenList(EmisTempCreditSalesmen emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改销售临时额度
|
||||||
|
*/
|
||||||
|
public int updateEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除销售临时额度
|
||||||
|
*/
|
||||||
|
public int deleteEmisTempCreditSalesmenByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询销售信用额度信息
|
||||||
|
*
|
||||||
|
* @param query 查询条件
|
||||||
|
* @return 销售信用额度信息
|
||||||
|
*/
|
||||||
|
public EmisCreditSalesmen selectCreditSalesmenInfo(EmisCreditSalesmen query);
|
||||||
|
|
||||||
|
}
|
||||||
@ -44,6 +44,7 @@ package com.xdadan.erp.emis.service;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运单列表Service业务层处理
|
* 运单列表Service业务层处理
|
||||||
@ -153,6 +154,12 @@ public class EmisBaseService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmisTmsCostFeeMapper emisTmsCostFeeMapper;
|
private EmisTmsCostFeeMapper emisTmsCostFeeMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisTempCreditSalesmenMapper emisTempCreditSalesmenMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisTempCreditCustomerMapper emisTempCreditCustomerMapper;
|
||||||
|
|
||||||
private static SysUser emptySysUser = new SysUser();
|
private static SysUser emptySysUser = new SysUser();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
@ -255,7 +262,7 @@ public class EmisBaseService {
|
|||||||
if("2".equals(newSettleType)){
|
if("2".equals(newSettleType)){
|
||||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditCustomer!=null) {
|
if(creditCustomer!=null) {
|
||||||
BigDecimal preBalance = creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
BigDecimal preBalance = calculateCustomerTempCreditMoney(creditCustomer).subtract(creditCustomer.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -266,7 +273,7 @@ public class EmisBaseService {
|
|||||||
// bug:1415 统计数据由销售联系人更改为回款联系人
|
// bug:1415 统计数据由销售联系人更改为回款联系人
|
||||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditSalesmen!=null) {
|
if(creditSalesmen!=null) {
|
||||||
BigDecimal preBalance = creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
BigDecimal preBalance = calculateSalesmenTempCreditMoney(creditSalesmen).subtract(creditSalesmen.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -281,7 +288,7 @@ public class EmisBaseService {
|
|||||||
if("2".equals(newSettleType)){
|
if("2".equals(newSettleType)){
|
||||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditCustomer!=null) {
|
if(creditCustomer!=null) {
|
||||||
BigDecimal preBalance = creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
BigDecimal preBalance = calculateCustomerTempCreditMoney(creditCustomer).subtract(creditCustomer.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -292,7 +299,7 @@ public class EmisBaseService {
|
|||||||
// bug:1415 统计数据由销售联系人更改为回款联系人
|
// bug:1415 统计数据由销售联系人更改为回款联系人
|
||||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditSalesmen!=null) {
|
if(creditSalesmen!=null) {
|
||||||
BigDecimal preBalance = creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
BigDecimal preBalance = calculateSalesmenTempCreditMoney(creditSalesmen).subtract(creditSalesmen.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -312,7 +319,7 @@ public class EmisBaseService {
|
|||||||
if("2".equals(newSettleType)){
|
if("2".equals(newSettleType)){
|
||||||
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditCustomer creditCustomer = getEmisCreditCustomerByCond(newBill.getCustNo(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditCustomer!=null) {
|
if(creditCustomer!=null) {
|
||||||
BigDecimal preBalance = creditCustomer.getCreditMoney().subtract(creditCustomer.getUseMoney());
|
BigDecimal preBalance = calculateCustomerTempCreditMoney(creditCustomer).subtract(creditCustomer.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -323,7 +330,7 @@ public class EmisBaseService {
|
|||||||
// bug:1415 统计数据由销售联系人更改为回款联系人
|
// bug:1415 统计数据由销售联系人更改为回款联系人
|
||||||
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
EmisCreditSalesmen creditSalesmen = getEmisCreditSalesmenByCond(newBill.getPayee(),newBill.getSendDate(),newBill.getCarryType());
|
||||||
if(creditSalesmen!=null) {
|
if(creditSalesmen!=null) {
|
||||||
BigDecimal preBalance = creditSalesmen.getCreditMoney().subtract(creditSalesmen.getUseMoney());
|
BigDecimal preBalance = calculateSalesmenTempCreditMoney(creditSalesmen).subtract(creditSalesmen.getUseMoney());
|
||||||
if (changeMoney.compareTo(preBalance) > 0) {
|
if (changeMoney.compareTo(preBalance) > 0) {
|
||||||
// 提示异常
|
// 提示异常
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度");
|
||||||
@ -335,6 +342,84 @@ public class EmisBaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算并返回销售临时额度总额
|
||||||
|
* tempCreditMoney = creditMoney + tempCreditMoneyAdjust
|
||||||
|
* tempCreditMoneyAdjust取自emis_temp_credit_salesmen,有多条时取当前时间在范围内的一条,没有则为0
|
||||||
|
*
|
||||||
|
* @param creditSalesmen 销售信用额度记录
|
||||||
|
* @return 临时额度总额
|
||||||
|
*/
|
||||||
|
public BigDecimal calculateSalesmenTempCreditMoney(EmisCreditSalesmen creditSalesmen) {
|
||||||
|
log.debug("开始计算客户[{}]的临时额度总额", creditSalesmen.getAccCode());
|
||||||
|
|
||||||
|
// 获取基础信用额度
|
||||||
|
BigDecimal baseCreditMoney = creditSalesmen.getCreditMoney() != null ? creditSalesmen.getCreditMoney()
|
||||||
|
: BigDecimal.ZERO;
|
||||||
|
|
||||||
|
// 查询当前有效的临时额度调整
|
||||||
|
EmisTempCreditSalesmen tempQuery = new EmisTempCreditSalesmen();
|
||||||
|
tempQuery.setAccCode(creditSalesmen.getAccCode());
|
||||||
|
List<EmisTempCreditSalesmen> tempList = emisTempCreditSalesmenMapper
|
||||||
|
.selectEmisTempCreditSalesmenList(tempQuery);
|
||||||
|
|
||||||
|
BigDecimal tempAdjust = BigDecimal.ZERO;
|
||||||
|
Date now = new Date();
|
||||||
|
|
||||||
|
for (EmisTempCreditSalesmen temp : tempList) {
|
||||||
|
if (temp.getStartDate() != null && temp.getEndDate() != null
|
||||||
|
&& now.after(temp.getStartDate()) && now.before(temp.getEndDate())) {
|
||||||
|
tempAdjust = temp.getTempCreditMoneyAdjust() != null ? temp.getTempCreditMoneyAdjust()
|
||||||
|
: BigDecimal.ZERO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal totalCreditMoney = baseCreditMoney.add(tempAdjust);
|
||||||
|
log.debug("客户[{}]的临时额度总额计算完成: 基础额度[{}] + 临时调整[{}] = 总额[{}]",
|
||||||
|
creditSalesmen.getAccCode(), baseCreditMoney, tempAdjust, totalCreditMoney);
|
||||||
|
return totalCreditMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算并返回客户临时额度总额
|
||||||
|
*
|
||||||
|
* tempCreditMoney = creditMoney + tempCreditMoneyAdjust
|
||||||
|
* tempCreditMoneyAdjust取自emis_temp_credit_customer,有多条时取当前时间在范围内的一条,没有则为0
|
||||||
|
*
|
||||||
|
* @param creditCustomer 客户信用额度记录
|
||||||
|
*/
|
||||||
|
public BigDecimal calculateCustomerTempCreditMoney(EmisCreditCustomer creditCustomer) {
|
||||||
|
log.debug("开始计算客户[{}]的临时额度总额", creditCustomer.getAccCode());
|
||||||
|
|
||||||
|
// 获取基础信用额度
|
||||||
|
BigDecimal baseCreditMoney = creditCustomer.getCreditMoney() != null ? creditCustomer.getCreditMoney()
|
||||||
|
: BigDecimal.ZERO;
|
||||||
|
|
||||||
|
// 查询当前有效的临时额度调整
|
||||||
|
EmisTempCreditCustomer tempQuery = new EmisTempCreditCustomer();
|
||||||
|
tempQuery.setAccCode(creditCustomer.getAccCode());
|
||||||
|
List<EmisTempCreditCustomer> tempList = emisTempCreditCustomerMapper
|
||||||
|
.selectEmisTempCreditCustomerList(tempQuery);
|
||||||
|
|
||||||
|
BigDecimal tempAdjust = BigDecimal.ZERO;
|
||||||
|
Date now = new Date();
|
||||||
|
|
||||||
|
for (EmisTempCreditCustomer temp : tempList) {
|
||||||
|
if (temp.getStartDate() != null && temp.getEndDate() != null
|
||||||
|
&& !now.before(temp.getStartDate()) && now.before(temp.getEndDate())) {
|
||||||
|
tempAdjust = temp.getTempCreditMoneyAdjust() != null ? temp.getTempCreditMoneyAdjust()
|
||||||
|
: BigDecimal.ZERO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal totalCreditMoney = baseCreditMoney.add(tempAdjust);
|
||||||
|
log.debug("客户[{}]的临时额度总额计算完成: 基础额度[{}] + 临时调整[{}] = 总额[{}]",
|
||||||
|
creditCustomer.getAccCode(), baseCreditMoney, tempAdjust, totalCreditMoney);
|
||||||
|
return totalCreditMoney;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 重新计算使用信用额度
|
* 重新计算使用信用额度
|
||||||
@ -1503,7 +1588,18 @@ public class EmisBaseService {
|
|||||||
try {
|
try {
|
||||||
Map useMoneyMap=emisCreditSalesmenMapper.getUseMoneyMap(item);
|
Map useMoneyMap=emisCreditSalesmenMapper.getUseMoneyMap(item);
|
||||||
BigDecimal useMoney = (BigDecimal)useMoneyMap.get("useMoney");
|
BigDecimal useMoney = (BigDecimal)useMoneyMap.get("useMoney");
|
||||||
emisCreditSalesmenMapper.updateUseMoney(item.getId(),useMoney);
|
List<EmisWaybill> emisWaybillList = getEmisWaybills(item);
|
||||||
|
// 账期内金额
|
||||||
|
BigDecimal inTermMoney = getInTermMoney(emisWaybillList);
|
||||||
|
// 超期金额
|
||||||
|
BigDecimal overTermMoney = BigDecimal.valueOf(useMoney.subtract(inTermMoney).stripTrailingZeros().longValue());
|
||||||
|
EmisCreditSalesmen emisCreditSalesmen = new EmisCreditSalesmen();
|
||||||
|
emisCreditSalesmen.setId(item.getId());
|
||||||
|
emisCreditSalesmen.setUseMoney(useMoney);
|
||||||
|
emisCreditSalesmen.setOverTermMoney(overTermMoney);
|
||||||
|
emisCreditSalesmen.setInTermMoney(inTermMoney);
|
||||||
|
emisCreditSalesmenMapper.updateEmisCreditSalesmen(emisCreditSalesmen);
|
||||||
|
log.info("success.autoDoCredit , emisCreditSalesmen,{}", JSON.toJSONString(emisCreditSalesmen));
|
||||||
}catch (Exception ex){
|
}catch (Exception ex){
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -1526,6 +1622,74 @@ public class EmisBaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BigDecimal getInTermMoney(List<EmisWaybill> emisWaybillList) {
|
||||||
|
List<EmisWaybill> inTermList = filterInTermEmisWaybillList(emisWaybillList);
|
||||||
|
List<String> billCodeList = inTermList.stream().map(EmisWaybill::getBillCode).collect(Collectors.toList());
|
||||||
|
log.info("cd getInTermMoney , billCodeList,{}", billCodeList);
|
||||||
|
if (CollectionUtil.isEmpty(billCodeList)) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
List<EmisSettleSubBill> emisSettleSubBillList = emisSettleSubBillMapper.querysSettleSubBillByBillCodeList(billCodeList);
|
||||||
|
if (CollectionUtil.isEmpty(emisSettleSubBillList)) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
log.info("query emisSettleSubBillList , emisSettleSubBillList,{}", emisSettleSubBillList);
|
||||||
|
BigDecimal inTermMoney = BigDecimal.valueOf(emisSettleSubBillList.stream()
|
||||||
|
.map(EmisSettleSubBill::getBillFee)
|
||||||
|
.filter(i -> i != null)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||||
|
.stripTrailingZeros().longValue());
|
||||||
|
log.info("success.getInTermMoney , inTermMoney,{}", inTermMoney);
|
||||||
|
return inTermMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<EmisWaybill> filterOverTermEmisWaybillList(List<EmisWaybill> list) {
|
||||||
|
log.info("cd filterOverTermEmisWaybillList , emisWaybillList,{}", list);
|
||||||
|
if (CollectionUtil.isEmpty(list)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<EmisWaybill> overTermList = list.stream()
|
||||||
|
.filter(item -> item.getOrderDate() != null)
|
||||||
|
.filter(item -> (System.currentTimeMillis() - item.getOrderDate().getTime()) > (10 * 1000 * 60 * 60 * 24))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
log.info("success.filterOverTermEmisWaybillList , overTermList,{}", overTermList);
|
||||||
|
return overTermList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<EmisWaybill> filterInTermEmisWaybillList(List<EmisWaybill> list) {
|
||||||
|
log.info("cd filterInTermEmisWaybillList , emisWaybillList,{}", list);
|
||||||
|
if (CollectionUtil.isEmpty(list)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<EmisWaybill> overTermList = filterOverTermEmisWaybillList(list);
|
||||||
|
if (CollectionUtil.isEmpty(overTermList)) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
List<EmisWaybill> inTermList = list.stream()
|
||||||
|
.filter(item -> !overTermList.contains(item))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
log.info("success.filterInTermEmisWaybillList , inTermList,{}", inTermList);
|
||||||
|
return inTermList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<EmisWaybill> getEmisWaybills(EmisCreditSalesmen item) {
|
||||||
|
EmisWaybill emisWaybill = new EmisWaybill();
|
||||||
|
emisWaybill.setPaymentType("1,3");
|
||||||
|
emisWaybill.setPayee(item.getSalesmen());
|
||||||
|
emisWaybill.setPaymentStatus("0,2");
|
||||||
|
emisWaybill.getParams().put("problemQueryType", "2");
|
||||||
|
emisWaybill.getParams().put("problemQueryIds", "173,170,151");
|
||||||
|
emisWaybill.getParams().put("queryTabType", "1");
|
||||||
|
emisWaybill.getParams().put("querySendType", "1");
|
||||||
|
emisWaybill.getParams().put("beginSendDate",
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getStartDate()));
|
||||||
|
emisWaybill.getParams().put("endSendDate",
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", item.getEndDate()));
|
||||||
|
emisWaybill.setCarryType(item.getTransType());
|
||||||
|
List<EmisWaybill> emisWaybillList = emisWaybillMapper.selectEmisWaybillList(emisWaybill);
|
||||||
|
return emisWaybillList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void redoGenerateBill(String billCode) throws EmisBizError{
|
public void redoGenerateBill(String billCode) throws EmisBizError{
|
||||||
|
|||||||
@ -17,6 +17,8 @@ import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
|||||||
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
|
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
|
||||||
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName EmisSettleBillService
|
* @ClassName EmisSettleBillService
|
||||||
* @Description 结算总账单
|
* @Description 结算总账单
|
||||||
@ -123,4 +125,6 @@ public interface IEmisSettleBillService extends IDataAuditService
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public int reCalcSettleBillPayStatus(String settleBillNo);
|
public int reCalcSettleBillPayStatus(String settleBillNo);
|
||||||
|
|
||||||
|
void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,47 @@
|
|||||||
|
package com.xdadan.erp.emis.service;
|
||||||
|
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditCustomer;
|
||||||
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户临时额度Service接口
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
|
public interface IEmisTempCreditCustomerService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询客户临时额度列表
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 客户临时额度集合
|
||||||
|
*/
|
||||||
|
List<EmisTempCreditCustomer> selectEmisTempCreditCustomerList(EmisTempCreditCustomer emisTempCreditCustomer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int insertEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer) throws EmisBizError;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int updateEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer) throws EmisBizError;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除客户临时额度
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的客户临时额度主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int deleteEmisTempCreditCustomerByIds(Long[] ids);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
* @Project: emis
|
||||||
|
* @Title: EmisTempCreditSalesmenService.java
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
* @version v1.0
|
||||||
|
* @Description: <p> 销售临时额度 服务类接口 </p>
|
||||||
|
*/
|
||||||
|
package com.xdadan.erp.emis.service;
|
||||||
|
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen;
|
||||||
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName EmisTempCreditSalesmenService
|
||||||
|
* @Description 销售临时额度
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
*/
|
||||||
|
public interface IEmisTempCreditSalesmenService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增销售临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditSalesmen 销售临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int insertEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen) throws EmisBizError;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询销售临时额度列表
|
||||||
|
*
|
||||||
|
* @param emisTempCreditSalesmen 销售临时额度
|
||||||
|
* @return 销售临时额度集合
|
||||||
|
*/
|
||||||
|
List<EmisTempCreditSalesmen> selectEmisTempCreditSalesmenList(EmisTempCreditSalesmen emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改销售临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditSalesmen 销售临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int updateEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen) throws EmisBizError;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除销售临时额度
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的销售临时额度主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
int deleteEmisTempCreditSalesmenByIds(Long[] ids);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,94 @@
|
|||||||
|
package com.xdadan.erp.emis.service.excelCellStrategy;
|
||||||
|
|
||||||
|
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||||
|
import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||||
|
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author heyu
|
||||||
|
* @ClassName CellStyleStrategy.java
|
||||||
|
* @Description CellStyleStrategy
|
||||||
|
* @createTime 2025年04月09日
|
||||||
|
*/
|
||||||
|
public class CellStyleStrategy extends HorizontalCellStyleStrategy {
|
||||||
|
|
||||||
|
|
||||||
|
private final WriteCellStyle headWriteCellStyle;
|
||||||
|
|
||||||
|
public CellStyleStrategy(WriteCellStyle headWriteCellStyle) {
|
||||||
|
this.headWriteCellStyle = headWriteCellStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setHeadCellStyle(CellWriteHandlerContext context) {
|
||||||
|
|
||||||
|
context.getWriteSheetHolder().getSheet().setColumnWidth(0, (int) (15.88 * 256));
|
||||||
|
context.getWriteSheetHolder().getSheet().setColumnWidth(1, (int) (20.5 * 256));
|
||||||
|
context.getWriteSheetHolder().getSheet().setColumnWidth(2, (int) (10 * 256));
|
||||||
|
context.getWriteSheetHolder().getSheet().setColumnWidth(3, (int) (12.5 * 256));
|
||||||
|
context.getWriteSheetHolder().getSheet().setColumnWidth(4, (int) (18.75 * 256));
|
||||||
|
// context.getWriteSheetHolder().getSheet().addMergedRegion(new CellRangeAddress(2,2,0,8));
|
||||||
|
// context.getWriteSheetHolder().getSheet().addMergedRegion(new CellRangeAddress(2,2,9,11));
|
||||||
|
// 根据行索引为不同级别的表头应用不同样式
|
||||||
|
if (context.getRowIndex() == 0) {
|
||||||
|
setRowStyle(context, (short) (27.75 * 20), (short) 14, IndexedColors.BLACK.getIndex(), false,IndexedColors.WHITE.getIndex());
|
||||||
|
} else if (context.getRowIndex() > 0 && context.getRowIndex() < 3) {
|
||||||
|
setRowStyle(context, (short) (27.75 * 20), (short) 12, IndexedColors.RED.getIndex(), true,IndexedColors.WHITE.getIndex());
|
||||||
|
if (context.getCell().getStringCellValue().contains("出账日期")) {
|
||||||
|
context.getRow().setHeight((short) (32 * 20));
|
||||||
|
}
|
||||||
|
} else if (context.getRow().getCell(0).getStringCellValue().contains("总计")) {
|
||||||
|
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
|
||||||
|
setRowStyle(context, (short) (23 * 20), (short) 8, IndexedColors.RED.getIndex(), true,IndexedColors.WHITE.getIndex());
|
||||||
|
} else if (context.getRow().getCell(0).getStringCellValue().contains("小计")) {
|
||||||
|
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
|
||||||
|
setRowStyle(context, (short) (23 * 20), (short) 8, IndexedColors.BLACK.getIndex(), false,IndexedColors.WHITE.getIndex());
|
||||||
|
} else {
|
||||||
|
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
|
||||||
|
setRowStyle(context, (short) (23 * 20), (short) 10, IndexedColors.BLACK.getIndex(), true,IndexedColors.YELLOW.getIndex());
|
||||||
|
// Workbook workbook = context.getWriteContext().getWorkbook();
|
||||||
|
// CellStyle cellStyle = workbook.createCellStyle();
|
||||||
|
// Font cellFont = workbook.createFont();
|
||||||
|
// cellFont.setBold(false);
|
||||||
|
// cellStyle.setFont(cellFont);
|
||||||
|
// Cell cell = context.getCell();
|
||||||
|
// if("贵司编号".equals(cell.getStringCellValue())){
|
||||||
|
// cellStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex());
|
||||||
|
// cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||||
|
// cell.setCellStyle(cellStyle);
|
||||||
|
// }else {
|
||||||
|
// cellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex());
|
||||||
|
// cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||||
|
// cell.setCellStyle(cellStyle);
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopProcessing(context)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
WriteCellData<?> cellData = context.getFirstCellData();
|
||||||
|
WriteCellStyle.merge(this.headWriteCellStyle, cellData.getOrCreateStyle());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setContentCellStyle(CellWriteHandlerContext context) {
|
||||||
|
context.getRow().setHeight((short) (23 * 20));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setRowStyle(CellWriteHandlerContext context, short height, short fontSize, short fontColor, boolean isBold, short backgroundColor) {
|
||||||
|
context.getRow().setHeight(height);
|
||||||
|
// 背景色
|
||||||
|
headWriteCellStyle.setFillForegroundColor(backgroundColor);
|
||||||
|
// 创建字体实例
|
||||||
|
WriteFont cellWriteFont = new WriteFont();
|
||||||
|
// 设置字体大小
|
||||||
|
cellWriteFont.setFontName("微软雅黑");
|
||||||
|
cellWriteFont.setFontHeightInPoints(fontSize);
|
||||||
|
cellWriteFont.setColor(fontColor);
|
||||||
|
cellWriteFont.setBold(isBold);
|
||||||
|
headWriteCellStyle.setWriteFont(cellWriteFont);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
/**
|
/**
|
||||||
* @Project: emis
|
* @Project: emis
|
||||||
* @Title: EmisCreditCustomerServiceImpl.java
|
* @Title: EmisCreditCustomerServiceImpl.java
|
||||||
* @author linfso
|
* @author linfso
|
||||||
@ -11,13 +11,18 @@
|
|||||||
package com.xdadan.erp.emis.service.impl;
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.xdadan.erp.emis.domain.EmisQuotePrice;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditCustomer;
|
||||||
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisTempCreditCustomerMapper;
|
||||||
|
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -34,8 +39,8 @@ import com.xdadan.erp.emis.service.IEmisCreditCustomerService;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class EmisCreditCustomerServiceImpl implements IEmisCreditCustomerService
|
public class EmisCreditCustomerServiceImpl extends EmisBaseService
|
||||||
{
|
implements IEmisCreditCustomerService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmisCreditCustomerMapper emisCreditCustomerMapper;
|
private EmisCreditCustomerMapper emisCreditCustomerMapper;
|
||||||
|
|
||||||
@ -59,9 +64,17 @@ public class EmisCreditCustomerServiceImpl implements IEmisCreditCustomerService
|
|||||||
* @return 客户信用额度表
|
* @return 客户信用额度表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<EmisCreditCustomer> selectEmisCreditCustomerList(EmisCreditCustomer emisCreditCustomer)
|
public List<EmisCreditCustomer> selectEmisCreditCustomerList(EmisCreditCustomer emisCreditCustomer) {
|
||||||
{
|
log.info("开始查询客户信用额度列表, 查询条件: {}", emisCreditCustomer);
|
||||||
return emisCreditCustomerMapper.selectEmisCreditCustomerList(emisCreditCustomer);
|
List<EmisCreditCustomer> list = emisCreditCustomerMapper.selectEmisCreditCustomerList(emisCreditCustomer);
|
||||||
|
|
||||||
|
// 计算每个记录的临时额度总额
|
||||||
|
for (EmisCreditCustomer item : list) {
|
||||||
|
item.setTempCreditMoney(calculateCustomerTempCreditMoney(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("查询到{}条客户信用额度记录", list.size());
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
/**
|
/**
|
||||||
* @Project: emis
|
* @Project: emis
|
||||||
* @Title: EmisCreditSalesmenServiceImpl.java
|
* @Title: EmisCreditSalesmenServiceImpl.java
|
||||||
* @author linfso
|
* @author linfso
|
||||||
@ -11,14 +11,17 @@
|
|||||||
package com.xdadan.erp.emis.service.impl;
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.xdadan.erp.emis.domain.EmisCreditCustomer;
|
import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen;
|
||||||
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisTempCreditSalesmenMapper;
|
||||||
|
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -34,11 +37,14 @@ import com.xdadan.erp.emis.service.IEmisCreditSalesmenService;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class EmisCreditSalesmenServiceImpl implements IEmisCreditSalesmenService
|
public class EmisCreditSalesmenServiceImpl extends EmisBaseService implements IEmisCreditSalesmenService
|
||||||
{
|
{
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmisCreditSalesmenMapper emisCreditSalesmenMapper;
|
private EmisCreditSalesmenMapper emisCreditSalesmenMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisTempCreditSalesmenMapper emisTempCreditSalesmenMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询销售信用额度
|
* 查询销售信用额度
|
||||||
* @param id 销售信用额度主键
|
* @param id 销售信用额度主键
|
||||||
@ -52,13 +58,21 @@ public class EmisCreditSalesmenServiceImpl implements IEmisCreditSalesmenService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询销售信用额度列表
|
* 查询销售信用额度列表
|
||||||
|
*
|
||||||
* @param emisCreditSalesmen 销售信用额度
|
* @param emisCreditSalesmen 销售信用额度
|
||||||
* @return 销售信用额度
|
* @return 销售信用额度
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<EmisCreditSalesmen> selectEmisCreditSalesmenList(EmisCreditSalesmen emisCreditSalesmen)
|
public List<EmisCreditSalesmen> selectEmisCreditSalesmenList(EmisCreditSalesmen emisCreditSalesmen) {
|
||||||
{
|
log.info("开始查询销售信用额度列表");
|
||||||
return emisCreditSalesmenMapper.selectEmisCreditSalesmenList(emisCreditSalesmen);
|
List<EmisCreditSalesmen> list = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(emisCreditSalesmen);
|
||||||
|
|
||||||
|
// 计算每个记录的临时额度总额
|
||||||
|
for (EmisCreditSalesmen item : list) {
|
||||||
|
item.setTempCreditMoney(calculateSalesmenTempCreditMoney(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -11,10 +11,22 @@
|
|||||||
package com.xdadan.erp.emis.service.impl;
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.xdadan.erp.common.core.domain.AjaxResult;
|
import cn.hutool.core.map.MapUtil;
|
||||||
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import com.alibaba.excel.ExcelWriter;
|
||||||
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||||
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||||
|
import com.alibaba.excel.write.metadata.WriteTable;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
||||||
|
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||||
|
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||||
|
import com.beust.jcommander.internal.Lists;
|
||||||
import com.xdadan.erp.common.utils.DateUtils;
|
import com.xdadan.erp.common.utils.DateUtils;
|
||||||
import com.xdadan.erp.common.utils.StringUtils;
|
import com.xdadan.erp.common.utils.StringUtils;
|
||||||
import com.xdadan.erp.emis.domain.*;
|
import com.xdadan.erp.emis.domain.*;
|
||||||
@ -25,15 +37,24 @@ import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
|
|||||||
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
|
||||||
import com.xdadan.erp.emis.mapper.*;
|
import com.xdadan.erp.emis.mapper.*;
|
||||||
import com.xdadan.erp.emis.service.EmisBaseService;
|
import com.xdadan.erp.emis.service.EmisBaseService;
|
||||||
|
import com.xdadan.erp.emis.service.excelCellStrategy.CellStyleStrategy;
|
||||||
|
import com.xdadan.erp.emis.service.test.CustomCellWriteHandler;
|
||||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||||
|
import org.apache.poi.ss.usermodel.IndexedColors;
|
||||||
|
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.xdadan.erp.emis.service.IEmisSettleBillService;
|
import com.xdadan.erp.emis.service.IEmisSettleBillService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.servlet.ServletOutputStream;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结算总账单Service业务层处理
|
* 结算总账单Service业务层处理
|
||||||
*
|
*
|
||||||
@ -60,6 +81,12 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmisSettlePayRelMapper emisSettlePayRelMapper;
|
private EmisSettlePayRelMapper emisSettlePayRelMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisBaseService emisBaseService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisSettleSubBillFeeitemMapper emisSettleSubBillFeeitemMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取稽核数据
|
* 获取稽核数据
|
||||||
* @param id
|
* @param id
|
||||||
@ -807,6 +834,224 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill) {
|
||||||
|
try {
|
||||||
|
log.info("cd exportSeaWayBill , emisSettleBill,{}", emisSettleBill);
|
||||||
|
|
||||||
|
Map<String, Object> textMap = new HashMap<>();
|
||||||
|
|
||||||
|
// 总账单
|
||||||
|
EmisSettleBill bill = emisBaseService.getSettleBillBySettleBillNo(emisSettleBill.getSettleBillNo());
|
||||||
|
|
||||||
|
// 子账单
|
||||||
|
List<EmisSettleSubBill> list = emisBaseService.selectSubBillListBySettleBillNo(emisSettleBill.getSettleBillNo());
|
||||||
|
|
||||||
|
// 运单号
|
||||||
|
List<String> billCodeList = list.stream()
|
||||||
|
.map(EmisSettleSubBill::getBillCode)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (org.springframework.util.CollectionUtils.isEmpty(list) || org.springframework.util.CollectionUtils.isEmpty(billCodeList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据运单号查询运单详情
|
||||||
|
List<EmisWaybillAndFeeitem> emisWaybills = emisSettleSubBillFeeitemMapper.selectEmisWaybillListByBillCodeList(billCodeList);
|
||||||
|
Map<String, EmisWaybillAndFeeitem> emisWaybillMap = emisWaybills.stream().collect(Collectors.toMap(EmisWaybillAndFeeitem::getBillCode, i -> i));
|
||||||
|
if (MapUtil.isEmpty(emisWaybillMap) || org.springframework.util.CollectionUtils.isEmpty(emisWaybills)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log.info("select emisWaybills is success, emisWaybills,{}", emisWaybills);
|
||||||
|
|
||||||
|
// 运单费用条目
|
||||||
|
List<EmisSettleSubBillFeeitem> emisWaybillFeeitemList = new ArrayList<>();
|
||||||
|
emisWaybills.forEach(emisWaybill -> {
|
||||||
|
if (Objects.nonNull(emisWaybill) && CollectionUtil.isNotEmpty(emisWaybill.getSettleSubBillFeeitemList())) {
|
||||||
|
emisWaybillFeeitemList.addAll(emisWaybill.getSettleSubBillFeeitemList());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
calculateTotal(emisWaybillFeeitemList, textMap);
|
||||||
|
log.info("get textMap is success, textMap,{}", textMap);
|
||||||
|
|
||||||
|
// 出账日期
|
||||||
|
String date = DateUtils.parseDateToStr("yyyy.M.dd", list.get(0).getBillDate());
|
||||||
|
String year = DateUtils.parseDateToStr("yyyy", list.get(0).getBillDate());
|
||||||
|
String month = DateUtils.parseDateToStr("M", list.get(0).getBillDate());
|
||||||
|
|
||||||
|
// String filePath = "D:\\log\\stduent_01.xlsx";
|
||||||
|
ServletOutputStream outputStream = response.getOutputStream();
|
||||||
|
|
||||||
|
//内容的策略
|
||||||
|
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
|
||||||
|
contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
|
||||||
|
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||||
|
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
|
||||||
|
WriteFont contentWriteFont = new WriteFont();
|
||||||
|
contentWriteFont.setFontName("微软雅黑");
|
||||||
|
contentWriteFont.setFontHeightInPoints((short) 8);
|
||||||
|
contentWriteCellStyle.setWriteFont(contentWriteFont);
|
||||||
|
|
||||||
|
ExcelWriter excelWriter = EasyExcel.write(outputStream).excelType(ExcelTypeEnum.XLSX).build();
|
||||||
|
List<List<String>> contentHeader = this.buildHeader();
|
||||||
|
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
|
||||||
|
new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
|
||||||
|
// 构建大表头
|
||||||
|
WriteSheet writeSheet1 = EasyExcel.writerSheet("sheet").needHead(Boolean.FALSE)
|
||||||
|
.registerWriteHandler(horizontalCellStyleStrategy)
|
||||||
|
.registerWriteHandler(new CellStyleStrategy(new WriteCellStyle())).build();
|
||||||
|
List<List<String>> header1 = contentHeader.stream().map(item -> Collections.singletonList("探路供应链(上海)")).collect(Collectors.toList());
|
||||||
|
WriteTable t1 = EasyExcel.writerTable(0).needHead(Boolean.TRUE).head(header1).build();
|
||||||
|
excelWriter.write((Collection<?>) null, writeSheet1, t1);
|
||||||
|
|
||||||
|
List<List<String>> header2 = contentHeader.stream().map(item -> Collections.singletonList(year + "年" + month + "月海运费确认书")).collect(Collectors.toList());
|
||||||
|
WriteTable t2 = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(header2).build();
|
||||||
|
excelWriter.write((Collection<?>) null, writeSheet1, t2);
|
||||||
|
|
||||||
|
List<List<String>> header3 = contentHeader.stream().map(item -> Collections.singletonList("结算对象:探路供应链公司")).collect(Collectors.toList());
|
||||||
|
header3.set(9, Collections.singletonList("出账日期:" + date));
|
||||||
|
header3.set(10, Collections.singletonList("出账日期:" + date));
|
||||||
|
header3.set(11, Collections.singletonList("出账日期:" + date));
|
||||||
|
WriteTable t3 = EasyExcel.writerTable(2).needHead(Boolean.TRUE).head(header3).build();
|
||||||
|
excelWriter.write((Collection<?>) null, writeSheet1, t3);
|
||||||
|
|
||||||
|
log.info("Building a large header is success");
|
||||||
|
|
||||||
|
List<String> excelKey = emisWaybillMap.keySet().stream().collect(Collectors.toList());
|
||||||
|
int num = 3;
|
||||||
|
for (int i = 0; i < excelKey.size(); i++) {
|
||||||
|
List<List<String>> result = new ArrayList<>();
|
||||||
|
Map<String, Object> subtotalMap = new HashMap<>();
|
||||||
|
|
||||||
|
EmisWaybillAndFeeitem emisWaybill = emisWaybillMap.get(excelKey.get(i));
|
||||||
|
List<EmisSettleSubBillFeeitem> settleSubBillFeeitemList = emisWaybill.getSettleSubBillFeeitemList();
|
||||||
|
calculateSubtotal(settleSubBillFeeitemList, subtotalMap);
|
||||||
|
settleSubBillFeeitemList.forEach(item -> {
|
||||||
|
result.add(Lists.newArrayList(emisWaybill.getLadingBillCode(), emisWaybill.getBillCode(), emisWaybill.getCompanyCode(), emisWaybill.getDeparturePort(),
|
||||||
|
emisWaybill.getDestinationPort(), emisWaybill.getBoxQuantity(), String.valueOf(emisWaybill.getParcelQty()),
|
||||||
|
emisWaybill.getBillWeight().stripTrailingZeros().toPlainString(),
|
||||||
|
emisWaybill.getTotalVolume().stripTrailingZeros().toPlainString(),
|
||||||
|
item.getFeeName(), item.getCurrency(), item.getBillFee().stripTrailingZeros().toPlainString()
|
||||||
|
));
|
||||||
|
});
|
||||||
|
// 小表头
|
||||||
|
WriteSheet sheet = EasyExcel.writerSheet("sheet")
|
||||||
|
.needHead(Boolean.FALSE)
|
||||||
|
.registerWriteHandler(new CustomCellWriteHandler()).build();
|
||||||
|
WriteTable writeTable0 = EasyExcel.writerTable(num).head(contentHeader).build();
|
||||||
|
excelWriter.write((Collection<?>) null, sheet, writeTable0);
|
||||||
|
|
||||||
|
// 行数据
|
||||||
|
WriteTable writeTable1 = EasyExcel.writerTable(num + 1).needHead(Boolean.TRUE).head(contentHeader).build();
|
||||||
|
excelWriter.write(result, writeSheet1, writeTable1);
|
||||||
|
|
||||||
|
log.info("Building the first row is success");
|
||||||
|
|
||||||
|
// 小计
|
||||||
|
List<List<String>> nameHeader2 = contentHeader.stream().map(item -> Collections.singletonList("小计: USD金额:" + subtotalMap.get("usdSubtotal") + " CNY金额:" + subtotalMap.get("cnySubtotal"))).collect(Collectors.toList());
|
||||||
|
WriteTable writeTable2 = EasyExcel.writerTable(num + 2).needHead(Boolean.TRUE).head(nameHeader2).build();
|
||||||
|
excelWriter.write((Collection<?>) null, writeSheet1, writeTable2);
|
||||||
|
num = num + 2;
|
||||||
|
}
|
||||||
|
// 总计
|
||||||
|
List<List<String>> nameHeader3 = contentHeader.stream().map(item -> Collections.singletonList("总计: USD金额:" + textMap.get("usdTotal") + " CNY金额:" + textMap.get("cnyTotal"))).collect(Collectors.toList());
|
||||||
|
WriteTable writeTable3 = EasyExcel.writerTable(num + 1).needHead(Boolean.TRUE).head(nameHeader3).build();
|
||||||
|
excelWriter.write((Collection<?>) null, writeSheet1, writeTable3);
|
||||||
|
|
||||||
|
log.info("exportSeaWayBill is success");
|
||||||
|
|
||||||
|
// 设置响应头信息
|
||||||
|
String fileName = bill.getSettleBillName() + "_海运账单.xlsx";
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()));
|
||||||
|
response.setContentType("application/octet-stream");
|
||||||
|
//关流
|
||||||
|
excelWriter.finish();
|
||||||
|
IOUtils.closeQuietly(outputStream);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<List<String>> buildHeader() {
|
||||||
|
List<List<String>> header = new ArrayList<>();
|
||||||
|
header.add(Collections.singletonList("提单号"));
|
||||||
|
header.add(Collections.singletonList("探路者面单号"));
|
||||||
|
header.add(Collections.singletonList("贵司编号"));
|
||||||
|
header.add(Collections.singletonList("起运港"));
|
||||||
|
header.add(Collections.singletonList("目的港"));
|
||||||
|
header.add(Collections.singletonList("箱量"));
|
||||||
|
header.add(Collections.singletonList("件数"));
|
||||||
|
header.add(Collections.singletonList("毛重"));
|
||||||
|
header.add(Collections.singletonList("体积"));
|
||||||
|
header.add(Collections.singletonList("费用名称"));
|
||||||
|
header.add(Collections.singletonList("币种"));
|
||||||
|
header.add(Collections.singletonList("金额"));
|
||||||
|
return header;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static void calculateTotal(List<EmisSettleSubBillFeeitem> emisWaybillFeeitemList, Map<String, Object> textMap) {
|
||||||
|
Map<String, List<EmisSettleSubBillFeeitem>> emisWaybillFeeitemMap = emisWaybillFeeitemList.stream()
|
||||||
|
.collect(Collectors.groupingBy(EmisSettleSubBillFeeitem::getCurrency));
|
||||||
|
|
||||||
|
if (MapUtil.isNotEmpty(emisWaybillFeeitemMap)) {
|
||||||
|
Set<String> keySet = emisWaybillFeeitemMap.keySet();
|
||||||
|
keySet.forEach(key -> {
|
||||||
|
// 计算每种金额总计
|
||||||
|
String count = emisWaybillFeeitemMap.get(key).stream()
|
||||||
|
.map(EmisSettleSubBillFeeitem::getBillFee)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||||
|
.stripTrailingZeros()
|
||||||
|
.toPlainString();
|
||||||
|
if (keySet.size() > 1) {
|
||||||
|
countA(key, textMap, "usdTotal", count, "cnyTotal");
|
||||||
|
} else {
|
||||||
|
countB(key, textMap, "usdTotal", count, "cnyTotal");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void calculateSubtotal(List<EmisSettleSubBillFeeitem> emisWaybillFeeitemList, Map<String, Object> textMap) {
|
||||||
|
Map<String, List<EmisSettleSubBillFeeitem>> emisWaybillFeeitemMap = emisWaybillFeeitemList.stream()
|
||||||
|
.collect(Collectors.groupingBy(EmisSettleSubBillFeeitem::getCurrency));
|
||||||
|
|
||||||
|
if (MapUtil.isNotEmpty(emisWaybillFeeitemMap)) {
|
||||||
|
Set<String> keySet = emisWaybillFeeitemMap.keySet();
|
||||||
|
keySet.forEach(key -> {
|
||||||
|
// 计算每种金额总计
|
||||||
|
String count = emisWaybillFeeitemMap.get(key).stream()
|
||||||
|
.map(EmisSettleSubBillFeeitem::getBillFee)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||||
|
.stripTrailingZeros()
|
||||||
|
.toPlainString();
|
||||||
|
if (keySet.size() > 1) {
|
||||||
|
countA(key, textMap, "usdSubtotal", count, "cnySubtotal");
|
||||||
|
} else {
|
||||||
|
countB(key, textMap, "usdSubtotal", count, "cnySubtotal");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void countA(String key, Map<String, Object> textMap, String usdSubtotal, String count, String cnySubtotal) {
|
||||||
|
if ("USD".equals(key)) {
|
||||||
|
textMap.put(usdSubtotal, count);
|
||||||
|
} else {
|
||||||
|
textMap.put(cnySubtotal, count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void countB(String key, Map<String, Object> textMap, String usdSubtotal, String count, String cnySubtotal) {
|
||||||
|
if ("USD".equals(key)) {
|
||||||
|
textMap.put(usdSubtotal, count);
|
||||||
|
textMap.put(cnySubtotal, "0");
|
||||||
|
} else {
|
||||||
|
textMap.put(cnySubtotal, count);
|
||||||
|
textMap.put(usdSubtotal, "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改结算总账单
|
* 修改结算总账单
|
||||||
|
|||||||
@ -0,0 +1,220 @@
|
|||||||
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.xdadan.erp.common.utils.DateUtils;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisCreditCustomer;
|
||||||
|
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||||
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisCreditCustomerMapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisTempCreditCustomerMapper;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditCustomer;
|
||||||
|
import com.xdadan.erp.emis.service.IEmisTempCreditCustomerService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户临时额度Service业务层处理
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class EmisTempCreditCustomerServiceImpl implements IEmisTempCreditCustomerService {
|
||||||
|
@Autowired
|
||||||
|
private EmisTempCreditCustomerMapper emisTempCreditCustomerMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisCreditCustomerMapper emisCreditCustomerMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询客户临时额度列表
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 客户临时额度
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<EmisTempCreditCustomer> selectEmisTempCreditCustomerList(
|
||||||
|
EmisTempCreditCustomer emisTempCreditCustomer) {
|
||||||
|
log.info("开始查询客户临时额度列表, 查询条件: {}", emisTempCreditCustomer);
|
||||||
|
List<EmisTempCreditCustomer> list = emisTempCreditCustomerMapper
|
||||||
|
.selectEmisTempCreditCustomerList(emisTempCreditCustomer);
|
||||||
|
log.info("查询到{}条客户临时额度记录", list.size());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int insertEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer) throws EmisBizError {
|
||||||
|
log.info("开始新增客户临时额度记录: {}", emisTempCreditCustomer);
|
||||||
|
|
||||||
|
// 获取客户信用额度信息
|
||||||
|
EmisCreditCustomer query = new EmisCreditCustomer();
|
||||||
|
query.setAccCode(emisTempCreditCustomer.getAccCode());
|
||||||
|
EmisCreditCustomer creditInfo = emisCreditCustomerMapper.selectCreditCustomerInfo(query);
|
||||||
|
if (creditInfo == null) {
|
||||||
|
log.error("未找到客户[{}]对应的信用额度记录", emisTempCreditCustomer.getAccCode());
|
||||||
|
throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "未找到对应的客户信用额度记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验临时额度日期范围
|
||||||
|
validateTempCreditDateRange(emisTempCreditCustomer, creditInfo);
|
||||||
|
|
||||||
|
// 校验临时额度时间是否有交叉
|
||||||
|
validateTempCreditTimeOverlap(emisTempCreditCustomer);
|
||||||
|
|
||||||
|
int rows = emisTempCreditCustomerMapper.insertEmisTempCreditCustomer(emisTempCreditCustomer);
|
||||||
|
log.info("新增客户临时额度记录成功");
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改客户临时额度
|
||||||
|
*
|
||||||
|
* @param emisTempCreditCustomer 客户临时额度
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateEmisTempCreditCustomer(EmisTempCreditCustomer emisTempCreditCustomer) throws EmisBizError {
|
||||||
|
log.info("开始修改客户临时额度记录: {}", emisTempCreditCustomer);
|
||||||
|
|
||||||
|
// 获取原记录
|
||||||
|
EmisTempCreditCustomer oldRecord = emisTempCreditCustomerMapper.selectEmisTempCreditCustomerById(emisTempCreditCustomer.getId());
|
||||||
|
if (oldRecord == null) {
|
||||||
|
log.error("未找到ID为[{}]的客户临时额度记录", emisTempCreditCustomer.getId());
|
||||||
|
throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "未找到对应的客户临时额度记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取客户信用额度信息
|
||||||
|
EmisCreditCustomer query = new EmisCreditCustomer();
|
||||||
|
query.setAccCode(oldRecord.getAccCode());
|
||||||
|
EmisCreditCustomer creditInfo = emisCreditCustomerMapper.selectCreditCustomerInfo(query);
|
||||||
|
if (creditInfo == null) {
|
||||||
|
log.error("未找到客户[{}]对应的信用额度记录", oldRecord.getAccCode());
|
||||||
|
throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "未找到对应的客户信用额度记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验临时额度日期范围
|
||||||
|
validateTempCreditDateRange(emisTempCreditCustomer, creditInfo);
|
||||||
|
|
||||||
|
// 校验临时额度时间是否有交叉
|
||||||
|
validateTempCreditTimeOverlap(emisTempCreditCustomer);
|
||||||
|
|
||||||
|
int rows = emisTempCreditCustomerMapper.updateEmisTempCreditCustomer(emisTempCreditCustomer);
|
||||||
|
log.info("修改客户临时额度记录成功");
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除客户临时额度
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的客户临时额度主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteEmisTempCreditCustomerByIds(Long[] ids) {
|
||||||
|
log.info("开始批量删除客户临时额度记录, ids: {}", ids);
|
||||||
|
int rows = emisTempCreditCustomerMapper.deleteEmisTempCreditCustomerByIds(ids);
|
||||||
|
log.info("批量删除客户临时额度记录成功, 删除{}条记录", rows);
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验临时额度日期范围是否在客户信用额度日期范围内
|
||||||
|
*
|
||||||
|
* @param tempCredit 临时额度信息
|
||||||
|
* @param creditInfo 客户信用额度信息
|
||||||
|
*/
|
||||||
|
private void validateTempCreditDateRange(EmisTempCreditCustomer tempCredit, EmisCreditCustomer creditInfo)
|
||||||
|
throws EmisBizError {
|
||||||
|
if (tempCredit.getStartDate() == null || tempCredit.getEndDate() == null) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期和结束日期不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前日期(年月日)
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
Date currentDate = calendar.getTime();
|
||||||
|
|
||||||
|
// 校验开始日期不能早于当前日期
|
||||||
|
if (tempCredit.getStartDate().before(currentDate)) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能早于当前日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tempCredit.getStartDate().after(tempCredit.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能晚于结束日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (creditInfo.getStartDate() != null && tempCredit.getStartDate().before(creditInfo.getStartDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能早于客户信用额度的开始日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (creditInfo.getEndDate() != null && tempCredit.getEndDate().after(creditInfo.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的结束日期不能晚于客户信用额度的结束日期");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验临时额度时间是否有交叉
|
||||||
|
* 同一个acc_code对应的多个start_date、end_date不能有交叉
|
||||||
|
*
|
||||||
|
* @param tempCredit 临时额度信息
|
||||||
|
*/
|
||||||
|
private void validateTempCreditTimeOverlap(EmisTempCreditCustomer tempCredit) throws EmisBizError {
|
||||||
|
log.info("开始校验客户[{}]的临时额度时间范围", tempCredit.getAccCode());
|
||||||
|
|
||||||
|
// 查询该客户的所有临时额度记录
|
||||||
|
EmisTempCreditCustomer query = new EmisTempCreditCustomer();
|
||||||
|
query.setAccCode(tempCredit.getAccCode());
|
||||||
|
List<EmisTempCreditCustomer> existingCredits = selectEmisTempCreditCustomerList(query);
|
||||||
|
|
||||||
|
// 检查新记录的时间范围是否与现有记录有交叉
|
||||||
|
for (EmisTempCreditCustomer credit : existingCredits) {
|
||||||
|
if (credit.getId() != null && credit.getId().equals(tempCredit.getId())) {
|
||||||
|
continue; // 跳过当前正在修改的记录
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查时间范围是否有交叉
|
||||||
|
if (isDateRangeOverlap(tempCredit.getStartDate(), tempCredit.getEndDate(),
|
||||||
|
credit.getStartDate(), credit.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,
|
||||||
|
String.format("临时额度时间范围与现有记录交叉: 新记录[%s-%s], 现有记录[%s-%s]",
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tempCredit.getStartDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tempCredit.getEndDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", credit.getStartDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", credit.getEndDate())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("客户[{}]的临时额度时间范围校验通过", tempCredit.getAccCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查两个时间范围是否有交叉
|
||||||
|
*
|
||||||
|
* @param start1 第一个时间范围的开始时间
|
||||||
|
* @param end1 第一个时间范围的结束时间
|
||||||
|
* @param start2 第二个时间范围的开始时间
|
||||||
|
* @param end2 第二个时间范围的结束时间
|
||||||
|
* @return true表示有交叉,false表示无交叉
|
||||||
|
*/
|
||||||
|
private boolean isDateRangeOverlap(Date start1, Date end1, Date start2, Date end2) {
|
||||||
|
if (start1 == null || end1 == null || start2 == null || end2 == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否有交叉
|
||||||
|
return !(end1.before(start2) || start1.after(end2));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,199 @@
|
|||||||
|
/**
|
||||||
|
* @Project: emis
|
||||||
|
* @Title: EmisTempCreditSalesmenServiceImpl.java
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
* @version v1.0
|
||||||
|
* @Description: <p> 销售临时额度 实体类 </p>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.xdadan.erp.common.utils.DateUtils;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisCreditSalesmen;
|
||||||
|
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||||
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisCreditSalesmenMapper;
|
||||||
|
import com.xdadan.erp.emis.mapper.EmisTempCreditSalesmenMapper;
|
||||||
|
import com.xdadan.erp.emis.service.IEmisTempCreditSalesmenService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售临时额度Service业务层处理
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
* @date 2025-04-15 16:17:56
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class EmisTempCreditSalesmenServiceImpl implements IEmisTempCreditSalesmenService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmisTempCreditSalesmenMapper emisTempCreditSalesmenMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int insertEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen) throws EmisBizError {
|
||||||
|
// 获取销售信用额度信息
|
||||||
|
EmisCreditSalesmen query = new EmisCreditSalesmen();
|
||||||
|
query.setAccCode(emisTempCreditSalesmen.getAccCode());
|
||||||
|
EmisCreditSalesmen creditInfo = emisTempCreditSalesmenMapper.selectCreditSalesmenInfo(query);
|
||||||
|
if (creditInfo == null) {
|
||||||
|
log.error("未找到客户[{}]对应的销售信用额度记录", emisTempCreditSalesmen.getAccCode());
|
||||||
|
throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "未找到对应的销售信用额度记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验临时额度日期范围
|
||||||
|
validateTempCreditDateRange(emisTempCreditSalesmen, creditInfo);
|
||||||
|
|
||||||
|
// 校验临时额度时间连续性
|
||||||
|
validateTempCreditTimeContinuity(emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
int rows = emisTempCreditSalesmenMapper.insertEmisTempCreditSalesmen(emisTempCreditSalesmen);
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<EmisTempCreditSalesmen> selectEmisTempCreditSalesmenList(
|
||||||
|
EmisTempCreditSalesmen emisTempCreditSalesmen) {
|
||||||
|
List<EmisTempCreditSalesmen> list = emisTempCreditSalesmenMapper
|
||||||
|
.selectEmisTempCreditSalesmenList(emisTempCreditSalesmen);
|
||||||
|
log.info("查询到{}条临时额度记录", list.size());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int updateEmisTempCreditSalesmen(EmisTempCreditSalesmen emisTempCreditSalesmen) throws EmisBizError {
|
||||||
|
// 获取原记录的临时额度
|
||||||
|
EmisTempCreditSalesmen oldRecord = new EmisTempCreditSalesmen();
|
||||||
|
oldRecord.setId(emisTempCreditSalesmen.getId());
|
||||||
|
List<EmisTempCreditSalesmen> list = selectEmisTempCreditSalesmenList(oldRecord);
|
||||||
|
if (!list.isEmpty()) {
|
||||||
|
EmisTempCreditSalesmen original = list.get(0);
|
||||||
|
|
||||||
|
// 获取当前信用额度
|
||||||
|
EmisCreditSalesmen query = new EmisCreditSalesmen();
|
||||||
|
query.setAccCode(original.getAccCode());
|
||||||
|
EmisCreditSalesmen creditInfo = emisTempCreditSalesmenMapper.selectCreditSalesmenInfo(query);
|
||||||
|
if (creditInfo == null) {
|
||||||
|
log.error("未找到客户[{}]对应的销售信用额度记录", original.getAccCode());
|
||||||
|
throw new EmisBizError(EmisBizErrorType.NOT_EXISTS, "未找到对应的销售信用额度记录");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验临时额度日期范围
|
||||||
|
validateTempCreditDateRange(emisTempCreditSalesmen, creditInfo);
|
||||||
|
|
||||||
|
// 校验临时额度时间连续性
|
||||||
|
validateTempCreditTimeContinuity(emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
int rows = emisTempCreditSalesmenMapper.updateEmisTempCreditSalesmen(emisTempCreditSalesmen);
|
||||||
|
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验临时额度日期范围是否在销售信用额度日期范围内
|
||||||
|
*
|
||||||
|
* @param tempCredit 临时额度信息
|
||||||
|
* @param creditInfo 销售信用额度信息
|
||||||
|
*/
|
||||||
|
private void validateTempCreditDateRange(EmisTempCreditSalesmen tempCredit, EmisCreditSalesmen creditInfo)
|
||||||
|
throws EmisBizError {
|
||||||
|
if (tempCredit.getStartDate() == null || tempCredit.getEndDate() == null) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期和结束日期不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前日期(年月日)
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
Date currentDate = calendar.getTime();
|
||||||
|
|
||||||
|
// 校验开始日期不能早于当前日期
|
||||||
|
if (tempCredit.getStartDate().before(currentDate)) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能早于当前日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tempCredit.getStartDate().after(tempCredit.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能晚于结束日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (creditInfo.getStartDate() != null && tempCredit.getStartDate().before(creditInfo.getStartDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的开始日期不能早于销售信用额度的开始日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (creditInfo.getEndDate() != null && tempCredit.getEndDate().after(creditInfo.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "临时额度的结束日期不能晚于销售信用额度的结束日期");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验临时额度时间连续性
|
||||||
|
* 同一个acc_code对应的多个start_date、end_date不能有交叉
|
||||||
|
*
|
||||||
|
* @param tempCredit 临时额度信息
|
||||||
|
*/
|
||||||
|
private void validateTempCreditTimeContinuity(EmisTempCreditSalesmen tempCredit) throws EmisBizError {
|
||||||
|
log.info("开始校验客户[{}]的临时额度时间范围", tempCredit.getAccCode());
|
||||||
|
|
||||||
|
// 查询该客户的所有临时额度记录
|
||||||
|
EmisTempCreditSalesmen query = new EmisTempCreditSalesmen();
|
||||||
|
query.setAccCode(tempCredit.getAccCode());
|
||||||
|
List<EmisTempCreditSalesmen> existingCredits = selectEmisTempCreditSalesmenList(query);
|
||||||
|
|
||||||
|
// 检查新记录的时间范围是否与现有记录有交叉
|
||||||
|
for (EmisTempCreditSalesmen credit : existingCredits) {
|
||||||
|
if (credit.getId().equals(tempCredit.getId())) {
|
||||||
|
continue; // 跳过当前正在修改的记录
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查时间范围是否有交叉
|
||||||
|
if (isDateRangeOverlap(tempCredit.getStartDate(), tempCredit.getEndDate(),
|
||||||
|
credit.getStartDate(), credit.getEndDate())) {
|
||||||
|
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1,
|
||||||
|
String.format("临时额度时间范围与现有记录交叉: 新记录[%s-%s], 现有记录[%s-%s]",
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tempCredit.getStartDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", tempCredit.getEndDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", credit.getStartDate()),
|
||||||
|
DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", credit.getEndDate())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("客户[{}]的临时额度时间范围校验通过", tempCredit.getAccCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查两个时间范围是否有交叉
|
||||||
|
*
|
||||||
|
* @param start1 第一个时间范围的开始时间
|
||||||
|
* @param end1 第一个时间范围的结束时间
|
||||||
|
* @param start2 第二个时间范围的开始时间
|
||||||
|
* @param end2 第二个时间范围的结束时间
|
||||||
|
* @return true表示有交叉,false表示无交叉
|
||||||
|
*/
|
||||||
|
private boolean isDateRangeOverlap(Date start1, Date end1, Date start2, Date end2) {
|
||||||
|
if (start1 == null || end1 == null || start2 == null || end2 == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否有交叉
|
||||||
|
return !(end1.before(start2) || start1.after(end2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int deleteEmisTempCreditSalesmenByIds(Long[] ids) {
|
||||||
|
return emisTempCreditSalesmenMapper.deleteEmisTempCreditSalesmenByIds(ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -229,4 +229,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectCreditCustomerInfo" parameterType="EmisCreditCustomer" resultMap="EmisCreditCustomerResult">
|
||||||
|
select
|
||||||
|
a.id, a.acc_code, a.customer_code, a.monthly_pay_code, a.credit_money,
|
||||||
|
a.use_money, a.currency, a.trans_type, a.start_date, a.end_date, a.bl_open,
|
||||||
|
b.customer_name
|
||||||
|
from emis_credit_customer a
|
||||||
|
inner join emis_customer_user b on a.customer_code = b.customer_code and b.del_flag = '0'
|
||||||
|
<where>
|
||||||
|
a.del_flag = '0'
|
||||||
|
<if test="accCode != null and accCode != ''"> and a.acc_code = #{accCode}</if>
|
||||||
|
<if test="customerCode != null and customerCode != ''"> and a.customer_code = #{customerCode}</if>
|
||||||
|
<if test="monthlyPayCode != null and monthlyPayCode != ''"> and a.monthly_pay_code = #{monthlyPayCode}</if>
|
||||||
|
<if test="transType != null and transType != ''"> and FIND_IN_SET(#{transType}, a.trans_type)</if>
|
||||||
|
<if test="customerName != null and customerName != ''"> and b.customer_name like concat('%', #{customerName}, '%')</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@ -10,6 +10,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="salesmen" column="salesmen" />
|
<result property="salesmen" column="salesmen" />
|
||||||
<result property="creditMoney" column="credit_money" />
|
<result property="creditMoney" column="credit_money" />
|
||||||
<result property="useMoney" column="use_money" />
|
<result property="useMoney" column="use_money" />
|
||||||
|
<result property="overTermMoney" column="over_term_money" />
|
||||||
|
<result property="inTermMoney" column="in_term_money" />
|
||||||
<result property="currency" column="currency" />
|
<result property="currency" column="currency" />
|
||||||
<result property="transType" column="trans_type" />
|
<result property="transType" column="trans_type" />
|
||||||
<result property="startDate" column="start_date" />
|
<result property="startDate" column="start_date" />
|
||||||
@ -22,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectEmisCreditSalesmenList" parameterType="EmisCreditSalesmen" resultMap="EmisCreditSalesmenResult">
|
<select id="selectEmisCreditSalesmenList" parameterType="EmisCreditSalesmen" resultMap="EmisCreditSalesmenResult">
|
||||||
select id, acc_code, salesmen, credit_money, use_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
select id, acc_code, salesmen, credit_money, use_money, over_term_money, in_term_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||||
from emis_credit_salesmen a
|
from emis_credit_salesmen a
|
||||||
<where>
|
<where>
|
||||||
del_flag='0'
|
del_flag='0'
|
||||||
@ -82,7 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectEmisCreditSalesmenById" parameterType="Long" resultMap="EmisCreditSalesmenResult">
|
<select id="selectEmisCreditSalesmenById" parameterType="Long" resultMap="EmisCreditSalesmenResult">
|
||||||
select id, acc_code, salesmen, credit_money, use_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
select id, acc_code, salesmen, credit_money, use_money, over_term_money, in_term_money, currency, trans_type, start_date, end_date, bl_open, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||||
from emis_credit_salesmen a
|
from emis_credit_salesmen a
|
||||||
where a.id = #{id}
|
where a.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
@ -121,6 +123,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="salesmen != null and salesmen != ''">salesmen,</if>
|
<if test="salesmen != null and salesmen != ''">salesmen,</if>
|
||||||
<if test="creditMoney != null">credit_money,</if>
|
<if test="creditMoney != null">credit_money,</if>
|
||||||
<if test="useMoney != null">use_money,</if>
|
<if test="useMoney != null">use_money,</if>
|
||||||
|
<if test="overTermMoney != null">over_term_money,</if>
|
||||||
|
<if test="inTermMoney != null">in_term_Money,</if>
|
||||||
<if test="currency != null and currency != ''">currency,</if>
|
<if test="currency != null and currency != ''">currency,</if>
|
||||||
<if test="transType != null and transType != ''">trans_type,</if>
|
<if test="transType != null and transType != ''">trans_type,</if>
|
||||||
<if test="startDate != null">start_date,</if>
|
<if test="startDate != null">start_date,</if>
|
||||||
@ -141,6 +145,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="salesmen != null and salesmen != ''">#{salesmen},</if>
|
<if test="salesmen != null and salesmen != ''">#{salesmen},</if>
|
||||||
<if test="creditMoney != null">#{creditMoney},</if>
|
<if test="creditMoney != null">#{creditMoney},</if>
|
||||||
<if test="useMoney != null">#{useMoney},</if>
|
<if test="useMoney != null">#{useMoney},</if>
|
||||||
|
<if test="overTermMoney != null">#{overTermMoney},</if>
|
||||||
|
<if test="inTermMoney != null">#{inTermMoney},</if>
|
||||||
<if test="currency != null and currency != ''">#{currency},</if>
|
<if test="currency != null and currency != ''">#{currency},</if>
|
||||||
<if test="transType != null and transType != ''">#{transType},</if>
|
<if test="transType != null and transType != ''">#{transType},</if>
|
||||||
<if test="startDate != null">#{startDate},</if>
|
<if test="startDate != null">#{startDate},</if>
|
||||||
@ -163,6 +169,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
<if test="creditMoney != null">credit_money = #{creditMoney},</if>
|
<if test="creditMoney != null">credit_money = #{creditMoney},</if>
|
||||||
<if test="useMoney != null">use_money = #{useMoney},</if>
|
<if test="useMoney != null">use_money = #{useMoney},</if>
|
||||||
|
<if test="overTermMoney != null">over_term_money = #{overTermMoney},</if>
|
||||||
|
<if test="inTermMoney != null">in_term_Money = #{inTermMoney},</if>
|
||||||
<if test="currency != null and currency != ''">currency = #{currency},</if>
|
<if test="currency != null and currency != ''">currency = #{currency},</if>
|
||||||
<if test="transType != null and transType != ''">trans_type = #{transType},</if>
|
<if test="transType != null and transType != ''">trans_type = #{transType},</if>
|
||||||
<if test="startDate != null">start_date = #{startDate},</if>
|
<if test="startDate != null">start_date = #{startDate},</if>
|
||||||
|
|||||||
@ -16,10 +16,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="orderNum" column="order_num" />
|
<result property="orderNum" column="order_num" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="EmisWaybillAndFeeitemResult" type="com.xdadan.erp.emis.domain.EmisWaybillAndFeeitem">
|
||||||
|
<!-- <id property="uuid" column="uuid"/>-->
|
||||||
|
<result property="billCode" column="bill_code"/>
|
||||||
|
<result property="ladingBillCode" column="lading_bill_code"/>
|
||||||
|
<result property="companyCode" column="company_code"/>
|
||||||
|
<result property="departurePort" column="departure_port"/>
|
||||||
|
<result property="destinationPort" column="destination_port"/>
|
||||||
|
<result property="boxQuantity" column="box_quantity"/>
|
||||||
|
<result property="parcelQty" column="parcel_qty"/>
|
||||||
|
<result property="billWeight" column="bill_weight"/>
|
||||||
|
<result property="totalVolume" column="total_volume"/>
|
||||||
|
<collection property="settleSubBillFeeitemList" javaType="java.util.List" resultMap="SettleSubBillFeeitemResult"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<resultMap id="SettleSubBillFeeitemResult" type="com.xdadan.erp.emis.domain.EmisSettleSubBillFeeitem">
|
||||||
|
<result property="subBillNo" column="sub_bill_no"/>
|
||||||
|
<result property="billCode" column="bill_code"/>
|
||||||
|
<result property="feeCode" column="fee_code"/>
|
||||||
|
<result property="feeName" column="fee_name"/>
|
||||||
|
<result property="billFee" column="bill_fee"/>
|
||||||
|
<result property="origFee" column="orig_fee"/>
|
||||||
|
<result property="currency" column="currency"/>
|
||||||
|
<result property="orderNum" column="order_num"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectEmisSettleSubBillFeeitemVo">
|
<sql id="selectEmisSettleSubBillFeeitemVo">
|
||||||
select id, sub_bill_no, bill_code, fee_code, fee_name, bill_fee, orig_fee, currency, order_num, del_flag, create_by, create_time, update_by, update_time, remark from emis_settle_sub_bill_feeitem
|
select id, sub_bill_no, bill_code, fee_code, fee_name, bill_fee, orig_fee, currency, order_num, del_flag, create_by, create_time, update_by, update_time, remark from emis_settle_sub_bill_feeitem
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
<sql id="selectEmisWaybillAndFeeitemVo">
|
||||||
|
select a.bill_code,
|
||||||
|
a.lading_bill_code,
|
||||||
|
a.company_code,
|
||||||
|
a.departure_port,
|
||||||
|
a.destination_port,
|
||||||
|
a.box_quantity,
|
||||||
|
a.parcel_qty,
|
||||||
|
a.bill_weight,
|
||||||
|
a.total_volume,
|
||||||
|
b.*
|
||||||
|
from emis_waybill a
|
||||||
|
left join emis_settle_sub_bill_feeitem b on a.bill_code = b.bill_code and b.del_flag = '0'
|
||||||
|
</sql>
|
||||||
|
|
||||||
<select id="selectFeeitemListBySubBillNo" parameterType="String" resultMap="EmisSettleSubBillFeeitemResult">
|
<select id="selectFeeitemListBySubBillNo" parameterType="String" resultMap="EmisSettleSubBillFeeitemResult">
|
||||||
select id, sub_bill_no, bill_code, fee_code, fee_name, bill_fee, orig_fee, currency, order_num,remark
|
select id, sub_bill_no, bill_code, fee_code, fee_name, bill_fee, orig_fee, currency, order_num,remark
|
||||||
from emis_settle_sub_bill_feeitem a
|
from emis_settle_sub_bill_feeitem a
|
||||||
@ -79,6 +119,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where a.id = #{id}
|
where a.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!--根据运单号列表获取运单信息-->
|
||||||
|
<select id="selectEmisWaybillListByBillCodeList" parameterType="list" resultMap="EmisWaybillAndFeeitemResult">
|
||||||
|
<include refid="selectEmisWaybillAndFeeitemVo"/>
|
||||||
|
<where>
|
||||||
|
a.bill_code in
|
||||||
|
<foreach collection="billCodeList" item="billCode" open="(" separator="," close=")">
|
||||||
|
#{billCode}
|
||||||
|
</foreach>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertEmisSettleSubBillFeeitem" parameterType="EmisSettleSubBillFeeitem" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertEmisSettleSubBillFeeitem" parameterType="EmisSettleSubBillFeeitem" useGeneratedKeys="true" keyProperty="id">
|
||||||
insert into emis_settle_sub_bill_feeitem
|
insert into emis_settle_sub_bill_feeitem
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|||||||
@ -117,6 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
a.send_name,a.parcel_qty,a.bill_weight,a.total_volume,a.volume_weight,a.settlement_weight,
|
a.send_name,a.parcel_qty,a.bill_weight,a.total_volume,a.volume_weight,a.settlement_weight,
|
||||||
a.freight,real_fee,a.fee_remark,a.payment_type,a.remark,
|
a.freight,real_fee,a.fee_remark,a.payment_type,a.remark,
|
||||||
a.payee,a.salesmen,a.bl_is_question,a.problem_cause,
|
a.payee,a.salesmen,a.bl_is_question,a.problem_cause,
|
||||||
|
a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
|
||||||
|
|
||||||
j.prod_name as product_type_name,
|
j.prod_name as product_type_name,
|
||||||
k.line_name as trans_line_type_name,
|
k.line_name as trans_line_type_name,
|
||||||
@ -626,8 +627,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where a.del_flag='0' and a.bill_code = #{billCode}
|
where a.del_flag='0' and a.bill_code = #{billCode}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="querysSettleSubBillByBillCodeList" parameterType="String" resultMap="EmisSettleSubBillResult">
|
||||||
|
select id, bill_no, parent_bill_no, settle_bill_no, bill_code, bill_date, bill_fee, currency, settle_type, bl_split, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, invoiced_money, reced_money, satisfy_money, allowance_money, deduction_money, other_money, satisfy_reason, allowance_reason, deduction_reason, other_reason, open_bill_status, payment_status, charge_status, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||||
|
from emis_settle_sub_bill a
|
||||||
|
where a.del_flag='0' and a.bill_code in
|
||||||
|
<foreach item="billCode" collection="billCodeList" open="(" separator="," close=")">
|
||||||
|
#{billCode}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectSubBillListBySettleBillNo" parameterType="String" resultMap="EmisSettleSubBillResult">
|
<select id="selectSubBillListBySettleBillNo" parameterType="String" resultMap="EmisSettleSubBillResult">
|
||||||
select id, bill_no, parent_bill_no, settle_bill_no, bill_code, bill_date, bill_fee, currency, settle_type, bl_split, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, invoiced_money, reced_money, satisfy_money, allowance_money, deduction_money, other_money, satisfy_reason, allowance_reason, deduction_reason, other_reason, open_bill_status, payment_status, charge_status, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
select id, bill_no, parent_bill_no, settle_bill_no, bill_code, bill_date, bill_fee, currency, settle_type, bl_split, bl_merge, bill_month, cust_no, cust_name, customer_code, customer_name, invoiced_money, reced_money, satisfy_money, allowance_money, deduction_money, other_money, satisfy_reason, allowance_reason, deduction_reason, other_reason, open_bill_status, payment_status, charge_status, payee, salesmen, bl_special_quote, bl_sensitive, bl_confirm_center, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||||
|
|||||||
@ -0,0 +1,108 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.xdadan.erp.emis.mapper.EmisTempCreditCustomerMapper">
|
||||||
|
|
||||||
|
<resultMap type="EmisTempCreditCustomer" id="EmisTempCreditCustomerResult"
|
||||||
|
extends="com.xdadan.erp.emis.mapper.EmisBaseMapper.EmisBaseResult">
|
||||||
|
<result property="id" column="id"/>
|
||||||
|
<result property="accCode" column="acc_code"/>
|
||||||
|
<result property="tempCreditMoneyAdjust" column="temp_credit_money_adjust"/>
|
||||||
|
<result property="startDate" column="start_date"/>
|
||||||
|
<result property="endDate" column="end_date"/>
|
||||||
|
<result property="transType" column="trans_type"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectEmisTempCreditCustomerVo">
|
||||||
|
select t.id, t.acc_code, t.temp_credit_money_adjust, t.start_date, t.end_date,
|
||||||
|
t.remark, t.del_flag, t.create_by, t.create_time, t.update_by, t.update_time,
|
||||||
|
t.create_site, t.update_site, c.trans_type, d.customer_name
|
||||||
|
from emis_temp_credit_customer t
|
||||||
|
left join emis_credit_customer c on t.acc_code = c.acc_code and c.del_flag = '0'
|
||||||
|
left join emis_customer_user d on c.customer_code = d.customer_code and d.del_flag = '0'
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectEmisTempCreditCustomerList" parameterType="EmisTempCreditCustomer" resultMap="EmisTempCreditCustomerResult">
|
||||||
|
<include refid="selectEmisTempCreditCustomerVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="accCode != null and accCode != ''"> and t.acc_code = #{accCode}</if>
|
||||||
|
<if test="startDate != null "> and t.start_date = #{startDate}</if>
|
||||||
|
<if test="endDate != null "> and t.end_date = #{endDate}</if>
|
||||||
|
<if test="transType != null and transType != ''"> and FIND_IN_SET(#{transType},c.trans_type)</if>
|
||||||
|
<if test="customerName != null and customerName != ''"> and d.customer_name = #{customerName}</if>
|
||||||
|
and t.del_flag = '0'
|
||||||
|
</where>
|
||||||
|
order by t.create_time desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectEmisTempCreditCustomerById" parameterType="Long" resultMap="EmisTempCreditCustomerResult">
|
||||||
|
select id, acc_code, temp_credit_money_adjust, start_date, end_date, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||||
|
from emis_temp_credit_customer
|
||||||
|
where id = #{id} and del_flag = '0'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertEmisTempCreditCustomer" parameterType="EmisTempCreditCustomer">
|
||||||
|
insert into emis_temp_credit_customer
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="id != null">id,</if>
|
||||||
|
<if test="accCode != null">acc_code,</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">temp_credit_money_adjust,</if>
|
||||||
|
<if test="startDate != null">start_date,</if>
|
||||||
|
<if test="endDate != null">end_date,</if>
|
||||||
|
<if test="remark != null">remark,</if>
|
||||||
|
<if test="delFlag != null">del_flag,</if>
|
||||||
|
<if test="createBy != null">create_by,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="updateBy != null">update_by,</if>
|
||||||
|
<if test="updateTime != null">update_time,</if>
|
||||||
|
<if test="createSite != null">create_site,</if>
|
||||||
|
<if test="updateSite != null">update_site,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="id != null">#{id},</if>
|
||||||
|
<if test="accCode != null">#{accCode},</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">#{tempCreditMoneyAdjust},</if>
|
||||||
|
<if test="startDate != null">#{startDate},</if>
|
||||||
|
<if test="endDate != null">#{endDate},</if>
|
||||||
|
<if test="remark != null">#{remark},</if>
|
||||||
|
<if test="delFlag != null">#{delFlag},</if>
|
||||||
|
<if test="createBy != null">#{createBy},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
|
<if test="createSite != null">#{createSite},</if>
|
||||||
|
<if test="updateSite != null">#{updateSite},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateEmisTempCreditCustomer" parameterType="EmisTempCreditCustomer">
|
||||||
|
update emis_temp_credit_customer
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<if test="accCode != null">acc_code = #{accCode},</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">temp_credit_money_adjust = #{tempCreditMoneyAdjust},</if>
|
||||||
|
<if test="startDate != null">start_date = #{startDate},</if>
|
||||||
|
<if test="endDate != null">end_date = #{endDate},</if>
|
||||||
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
|
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||||
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
<if test="createSite != null">create_site = #{createSite},</if>
|
||||||
|
<if test="updateSite != null">update_site = #{updateSite},</if>
|
||||||
|
</trim>
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<delete id="deleteEmisTempCreditCustomerById" parameterType="Long">
|
||||||
|
update emis_temp_credit_customer set del_flag = '1' where id = #{id}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteEmisTempCreditCustomerByIds" parameterType="String">
|
||||||
|
update emis_temp_credit_customer set del_flag = '1' where id in
|
||||||
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,123 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.xdadan.erp.emis.mapper.EmisTempCreditSalesmenMapper">
|
||||||
|
|
||||||
|
<resultMap type="com.xdadan.erp.emis.domain.EmisTempCreditSalesmen" id="EmisTempCreditSalesmenResult" extends="com.xdadan.erp.emis.mapper.EmisBaseMapper.EmisBaseResult">
|
||||||
|
<result property="id" column="id"/>
|
||||||
|
<result property="accCode" column="acc_code"/>
|
||||||
|
<result property="tempCreditMoneyAdjust" column="temp_credit_money_adjust"/>
|
||||||
|
<result property="startDate" column="start_date"/>
|
||||||
|
<result property="endDate" column="end_date"/>
|
||||||
|
<result property="transType" column="trans_type"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectEmisTempCreditSalesmenVo">
|
||||||
|
select t.id, t.acc_code, t.temp_credit_money_adjust,
|
||||||
|
t.start_date, t.end_date, t.del_flag, t.create_by, t.create_time,
|
||||||
|
t.update_by, t.update_time, t.remark, t.create_site, t.update_site, c.trans_type, c.salesmen
|
||||||
|
from emis_temp_credit_salesmen t
|
||||||
|
left join emis_credit_salesmen c on t.acc_code = c.acc_code and c.del_flag = '0'
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectCreditSalesmenInfo" parameterType="com.xdadan.erp.emis.domain.EmisCreditSalesmen" resultType="com.xdadan.erp.emis.domain.EmisCreditSalesmen">
|
||||||
|
select id, acc_code, credit_money, use_money, over_term_money,
|
||||||
|
in_term_money, currency, trans_type, start_date, end_date, bl_open,
|
||||||
|
remark, tenant_id, del_flag, create_by, create_time, update_by,
|
||||||
|
update_time, create_site, update_site
|
||||||
|
from emis_credit_salesmen
|
||||||
|
where acc_code = #{accCode}
|
||||||
|
and del_flag = '0'
|
||||||
|
order by create_time desc
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectEmisTempCreditSalesmenList" parameterType="com.xdadan.erp.emis.domain.EmisTempCreditSalesmen"
|
||||||
|
resultMap="EmisTempCreditSalesmenResult">
|
||||||
|
<include refid="selectEmisTempCreditSalesmenVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="accCode != null and accCode != ''">
|
||||||
|
AND t.acc_code = #{accCode}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="tempCreditMoneyAdjust != null ">
|
||||||
|
AND t.temp_credit_money_adjust = #{tempCreditMoneyAdjust}
|
||||||
|
</if>
|
||||||
|
<if test="salesmen != null and salesmen != ''">
|
||||||
|
AND c.salesmen = #{salesmen}
|
||||||
|
</if>
|
||||||
|
<if test="transType != null and transType != ''">
|
||||||
|
AND FIND_IN_SET(#{transType},c.trans_type)</if>
|
||||||
|
<if test="startDate != null">
|
||||||
|
AND t.start_date = #{startDate}
|
||||||
|
</if>
|
||||||
|
<if test="endDate != null">
|
||||||
|
AND t.end_date = #{endDate}
|
||||||
|
</if>
|
||||||
|
AND t.del_flag = '0'
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectEmisTempCreditSalesmenById" parameterType="Long" resultMap="EmisTempCreditSalesmenResult">
|
||||||
|
<include refid="selectEmisTempCreditSalesmenVo"/>
|
||||||
|
where id = #{id} and del_flag = '0'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertEmisTempCreditSalesmen" parameterType="com.xdadan.erp.emis.domain.EmisTempCreditSalesmen" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into emis_temp_credit_salesmen
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="accCode != null">acc_code,</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">temp_credit_money_adjust,</if>
|
||||||
|
<if test="startDate != null">start_date,</if>
|
||||||
|
<if test="endDate != null">end_date,</if>
|
||||||
|
<if test="delFlag != null">del_flag,</if>
|
||||||
|
<if test="createBy != null">create_by,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="updateBy != null">update_by,</if>
|
||||||
|
<if test="updateTime != null">update_time,</if>
|
||||||
|
<if test="remark != null">remark,</if>
|
||||||
|
<if test="createSite != null and createSite != ''">create_site,</if>
|
||||||
|
<if test="updateSite != null and updateSite != ''">update_site,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="accCode != null">#{accCode},</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">#{tempCreditMoneyAdjust},</if>
|
||||||
|
<if test="startDate != null">#{startDate},</if>
|
||||||
|
<if test="endDate != null">#{endDate},</if>
|
||||||
|
<if test="delFlag != null">#{delFlag},</if>
|
||||||
|
<if test="createBy != null">#{createBy},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
|
<if test="remark != null">#{remark},</if>
|
||||||
|
<if test="createSite != null and createSite != ''">#{createSite},</if>
|
||||||
|
<if test="updateSite != null and updateSite != ''">#{updateSite},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateEmisTempCreditSalesmen" parameterType="com.xdadan.erp.emis.domain.EmisTempCreditSalesmen">
|
||||||
|
update emis_temp_credit_salesmen
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<if test="accCode != null">acc_code = #{accCode},</if>
|
||||||
|
<if test="tempCreditMoneyAdjust != null">temp_credit_money_adjust = #{tempCreditMoneyAdjust},</if>
|
||||||
|
<if test="startDate != null">start_date = #{startDate},</if>
|
||||||
|
<if test="endDate != null">end_date = #{endDate},</if>
|
||||||
|
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||||
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
|
<if test="createSite != null and createSite != ''">create_site = #{createSite},</if>
|
||||||
|
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
|
||||||
|
</trim>
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="deleteEmisTempCreditSalesmenByIds" parameterType="String">
|
||||||
|
update emis_temp_credit_salesmen set del_flag = '1' where id in
|
||||||
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</update>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@ -171,6 +171,11 @@
|
|||||||
<result property="dataFrom" column="data_from" />
|
<result property="dataFrom" column="data_from" />
|
||||||
<result property="blSpecialGoods" column="bl_special_goods" />
|
<result property="blSpecialGoods" column="bl_special_goods" />
|
||||||
<result property="extInfo" column="ext_info" />
|
<result property="extInfo" column="ext_info" />
|
||||||
|
<result property="ladingBillCode" column="lading_bill_code" />
|
||||||
|
<result property="companyCode" column="company_code" />
|
||||||
|
<result property="departurePort" column="departure_port" />
|
||||||
|
<result property="destinationPort" column="destination_port" />
|
||||||
|
<result property="boxQuantity" column="box_quantity" />
|
||||||
|
|
||||||
<!-- 扩展属性 -->
|
<!-- 扩展属性 -->
|
||||||
<result property="receiveCountryName" column="receive_country_name" />
|
<result property="receiveCountryName" column="receive_country_name" />
|
||||||
@ -300,7 +305,7 @@
|
|||||||
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
|
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
|
||||||
a.remark, a.del_flag, a.create_by,
|
a.remark, a.del_flag, a.create_by,
|
||||||
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
|
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
|
||||||
a.cod_fee_desc,
|
a.cod_fee_desc, a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
|
||||||
|
|
||||||
b.name as receive_country_name,c.name as send_country_name,
|
b.name as receive_country_name,c.name as send_country_name,
|
||||||
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
|
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
|
||||||
@ -396,7 +401,7 @@
|
|||||||
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
|
a.payment_status, a.payment_date, a.payment_remark, a.order_remark, a.data_from, a.bl_special_goods,a.ext_info,
|
||||||
a.remark, a.del_flag, a.create_by,
|
a.remark, a.del_flag, a.create_by,
|
||||||
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
|
a.create_time, a.update_by, a.update_time, a.create_site, a.update_site,
|
||||||
a.cod_fee_desc,
|
a.cod_fee_desc, a.lading_bill_code, a.company_code, a.departure_port, a.destination_port, a.box_quantity,
|
||||||
|
|
||||||
b.name as receive_country_name,c.name as send_country_name,
|
b.name as receive_country_name,c.name as send_country_name,
|
||||||
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
|
d.region_name as receive_province_name,e.region_name as receive_city_name,f.region_name as receive_county_name,
|
||||||
@ -2440,6 +2445,11 @@
|
|||||||
<if test="updateTime != null">update_time,</if>
|
<if test="updateTime != null">update_time,</if>
|
||||||
<if test="createSite != null and createSite != ''">create_site,</if>
|
<if test="createSite != null and createSite != ''">create_site,</if>
|
||||||
<if test="updateSite != null and updateSite != ''">update_site,</if>
|
<if test="updateSite != null and updateSite != ''">update_site,</if>
|
||||||
|
<if test="ladingBillCode != null and ladingBillCode != ''">lading_bill_code ,</if>
|
||||||
|
<if test="companyCode != null and companyCode != ''">company_code ,</if>
|
||||||
|
<if test="departurePort != null and departurePort != ''">departure_port ,</if>
|
||||||
|
<if test="destinationPort != null and destinationPort != ''">destination_port ,</if>
|
||||||
|
<if test="boxQuantity != null and boxQuantity != ''">box_quantity ,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="orderSn != null and orderSn != ''">#{orderSn},</if>
|
<if test="orderSn != null and orderSn != ''">#{orderSn},</if>
|
||||||
@ -2619,6 +2629,11 @@
|
|||||||
<if test="updateTime != null">#{updateTime},</if>
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
<if test="createSite != null and createSite != ''">#{createSite},</if>
|
<if test="createSite != null and createSite != ''">#{createSite},</if>
|
||||||
<if test="updateSite != null and updateSite != ''">#{updateSite},</if>
|
<if test="updateSite != null and updateSite != ''">#{updateSite},</if>
|
||||||
|
<if test="ladingBillCode != null and ladingBillCode != ''">#{ladingBillCode},</if>
|
||||||
|
<if test="companyCode != null and companyCode != ''">#{companyCode},</if>
|
||||||
|
<if test="departurePort != null and departurePort != ''">#{departurePort},</if>
|
||||||
|
<if test="destinationPort != null and destinationPort != ''">#{destinationPort},</if>
|
||||||
|
<if test="boxQuantity != null and boxQuantity != ''">#{boxQuantity},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
@ -2800,6 +2815,11 @@
|
|||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
<if test="createSite != null and createSite != ''">create_site = #{createSite},</if>
|
<if test="createSite != null and createSite != ''">create_site = #{createSite},</if>
|
||||||
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
|
<if test="updateSite != null and updateSite != ''">update_site = #{updateSite},</if>
|
||||||
|
<if test="ladingBillCode != null and ladingBillCode != ''">lading_bill_code = #{ladingBillCode},</if>
|
||||||
|
<if test="companyCode != null and companyCode != ''">company_code = #{companyCode},</if>
|
||||||
|
<if test="departurePort != null and departurePort != ''">departure_port = #{departurePort},</if>
|
||||||
|
<if test="destinationPort != null and destinationPort != ''">destination_port = #{destinationPort},</if>
|
||||||
|
<if test="boxQuantity != null and boxQuantity != ''">box_quantity = #{boxQuantity},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user