From 9e346598f1e45431c12a30f82e01aceea4da8d59 Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Sun, 29 Sep 2024 10:59:54 +0800 Subject: [PATCH] 2024-09-29 --- .../impl/QuotationHeaderServiceImpl.java | 1 + .../controller/SalesQuoteController.java | 50 ++++++++++ .../modules/quote/entity/SalesQuote.java | 92 ++++++++++++++++++ .../quote/entity/SalesQuoteDetail.java | 78 +++++++++++++++ .../quote/mapper/SalesQuoteMapper.java | 16 ++++ .../quote/service/SalesQuoteService.java | 17 ++++ .../service/impl/SalesQuoteServiceImpl.java | 74 +++++++++++++++ src/main/resources/application-dev.yml | 2 +- .../quotation/QuotationHeaderMapper.xml | 2 +- .../mapper/quote/SalesQuoteMapper.xml | 94 +++++++++++++++++++ 10 files changed, 424 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/spring/modules/quote/controller/SalesQuoteController.java create mode 100644 src/main/java/com/spring/modules/quote/entity/SalesQuote.java create mode 100644 src/main/java/com/spring/modules/quote/entity/SalesQuoteDetail.java create mode 100644 src/main/java/com/spring/modules/quote/mapper/SalesQuoteMapper.java create mode 100644 src/main/java/com/spring/modules/quote/service/SalesQuoteService.java create mode 100644 src/main/java/com/spring/modules/quote/service/impl/SalesQuoteServiceImpl.java create mode 100644 src/main/resources/mapper/quote/SalesQuoteMapper.xml diff --git a/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java b/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java index 03181097..f20abb43 100644 --- a/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java +++ b/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java @@ -253,6 +253,7 @@ public class QuotationHeaderServiceImpl extends ServiceImpl page = salesQuoteService.querySalesQuoteByPage(no, size, quote); + return R.ok().put("rows", page.getRecords()).put("total", page.getTotal()); + } + + @PostMapping("/save") + public R saveSalesQuote(@RequestBody SalesQuote quote){ + salesQuoteService.saveSalesQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/update") + public R updateSalesQuote(@RequestBody SalesQuote quote){ + salesQuoteService.updateSalesQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/remove") + public R removeSalesQuote(@RequestBody SalesQuote quote){ + salesQuoteService.removeSalesQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/update/status") + public R updateSalesQuoteStatus(@RequestBody SalesQuote quote){ + salesQuoteService.updateSalesQuoteStatus(quote); + return R.ok("操作成功"); + } +} diff --git a/src/main/java/com/spring/modules/quote/entity/SalesQuote.java b/src/main/java/com/spring/modules/quote/entity/SalesQuote.java new file mode 100644 index 00000000..2bb344e7 --- /dev/null +++ b/src/main/java/com/spring/modules/quote/entity/SalesQuote.java @@ -0,0 +1,92 @@ +package com.spring.modules.quote.entity; + +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 lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@TableName("quotation_header") +@Data +public class SalesQuote { + + @TableField(exist = false) + public static final String PREFIX = "BJ"; + @TableField(exist = false) + public static final String VERSION_PREFIX = "A"; + @TableField(exist = false) + public static final String DEFAULT_STATUS = "草稿"; + + @TableId("quotation_header_id") + private Long id; + + private String site; + + private String quotationNo; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date quotationDate; + + private String customerNo; + + private String versionCode; + + private String projectId; + + private String quoter; + + private String tracker; + + private String currency; + + @TableField("quotation_status") + private String status; + + private String remark; + + private String customerInquiryNo; + + private String internalInquiryNo; + + private String requireApproval; + + private String approvalStatus; + + private String createBy; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + private String active; + + private String toolRequireFlag; + + @TableField(exist = false) + private String customerDesc; + + @TableField(exist = false) + private String projectDesc; + + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date startDate; + + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date endDate; + + @TableField(exist = false) + private String quoterName; + + @TableField(exist = false) + private String trackerName; + @TableField(exist = false) + private String quoteVersionNo; +} diff --git a/src/main/java/com/spring/modules/quote/entity/SalesQuoteDetail.java b/src/main/java/com/spring/modules/quote/entity/SalesQuoteDetail.java new file mode 100644 index 00000000..970b1065 --- /dev/null +++ b/src/main/java/com/spring/modules/quote/entity/SalesQuoteDetail.java @@ -0,0 +1,78 @@ +package com.spring.modules.quote.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +@TableName("quotation_detail") +@Data +public class SalesQuoteDetail { + + @TableId("quotation_detail_id") + private Long id; + + private Long quotation_header_id; + + private String site; + + private String product_no; + + private String product_desc; + + private String internal_inquiry_no; + + @TableField("quotation_detail_quantity") + private BigDecimal qty; + + private Integer quotation_detail_count; + + @TableField("quotation_detail_status") + private String status; + + private BigDecimal compute_part_cost; + + private BigDecimal compute_labour_cost; + + private BigDecimal compute_fabricate_cost; + + private BigDecimal compute_tool_cost; + + private BigDecimal adjust_part_cost; + + private BigDecimal adjust_labour_cost; + + private BigDecimal adjust_fabricate_cost; + + private BigDecimal adjust_tool_cost; + + private BigDecimal detail_other_cost; + + private BigDecimal detail_manage_cost; + + private BigDecimal detail_total_cost; + + private BigDecimal detail_profit_rate; + + private BigDecimal detail_profit_amount; + + private BigDecimal system_compute_amount; + + private BigDecimal system_compute_price; + + private BigDecimal final_untaxed_price; + + private BigDecimal final_taxed_price; + + private BigDecimal compute_machine_cost; + + private BigDecimal adjust_machine_cost; + + private BigDecimal tax_rate; + + private String remark; + + private String active; +} diff --git a/src/main/java/com/spring/modules/quote/mapper/SalesQuoteMapper.java b/src/main/java/com/spring/modules/quote/mapper/SalesQuoteMapper.java new file mode 100644 index 00000000..95dc343d --- /dev/null +++ b/src/main/java/com/spring/modules/quote/mapper/SalesQuoteMapper.java @@ -0,0 +1,16 @@ +package com.spring.modules.quote.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.spring.modules.quote.entity.SalesQuote; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface SalesQuoteMapper extends BaseMapper { + IPage querySalesQuoteByPage(@Param("page") Page page,@Param("quote") SalesQuote quote); + + Integer getSalesQuoteNo(SalesQuote quote); + Integer getSalesVersionCode(SalesQuote quote); +} diff --git a/src/main/java/com/spring/modules/quote/service/SalesQuoteService.java b/src/main/java/com/spring/modules/quote/service/SalesQuoteService.java new file mode 100644 index 00000000..6d5521c4 --- /dev/null +++ b/src/main/java/com/spring/modules/quote/service/SalesQuoteService.java @@ -0,0 +1,17 @@ +package com.spring.modules.quote.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.spring.modules.quote.entity.SalesQuote; + +public interface SalesQuoteService extends IService { + IPage querySalesQuoteByPage(int no, int size, SalesQuote quote); + + void saveSalesQuote(SalesQuote quote); + + void updateSalesQuote(SalesQuote quote); + + void removeSalesQuote(SalesQuote quote); + + void updateSalesQuoteStatus(SalesQuote quote); +} diff --git a/src/main/java/com/spring/modules/quote/service/impl/SalesQuoteServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/SalesQuoteServiceImpl.java new file mode 100644 index 00000000..bb522593 --- /dev/null +++ b/src/main/java/com/spring/modules/quote/service/impl/SalesQuoteServiceImpl.java @@ -0,0 +1,74 @@ +package com.spring.modules.quote.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.spring.modules.quote.entity.SalesQuote; +import com.spring.modules.quote.mapper.SalesQuoteMapper; +import com.spring.modules.quote.service.SalesQuoteService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +@Service +public class SalesQuoteServiceImpl extends ServiceImpl implements SalesQuoteService { + @Override + public IPage querySalesQuoteByPage(int no, int size, SalesQuote quote) { + Page page = new Page<>(no, size); + return baseMapper.querySalesQuoteByPage(page,quote); + } + + @Override + @Transactional + public void saveSalesQuote(SalesQuote quote) { + // 获取报价单号 + Integer code = baseMapper.getSalesQuoteNo(quote); + String quoteNo = String.format("%08d", code); + quote.setQuotationNo(SalesQuote.PREFIX + quoteNo); + // 获取版本号 + Integer version = baseMapper.getSalesVersionCode(quote); + String versionCode = String.format("%03d", version); + quote.setVersionCode(SalesQuote.VERSION_PREFIX+versionCode); + // 设置默认状态 + quote.setStatus(SalesQuote.DEFAULT_STATUS); + // 设置创建时间 + quote.setCreateTime(new Date()); + + + save(quote); + } + + @Override + @Transactional + public void updateSalesQuote(SalesQuote quote) { + updateById(quote); + } + + @Override + @Transactional + public void removeSalesQuote(SalesQuote quote) { + // 校验明细 + + + removeById(quote.getId()); + } + + @Override + @Transactional + public void updateSalesQuoteStatus(SalesQuote quote) { + String status = quote.getStatus(); + if("下达".equals(quote.getStatus())){ + status = "草稿"; + }else if ("草稿".equals(quote.getStatus())){ + status = "下达"; + } + // 改变明细状态 + + // 改变报价单状态 + lambdaUpdate() + .eq(SalesQuote::getId,quote.getId()) + .set(SalesQuote::getStatus,status) + .update(); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 992e7d32..2bdaff25 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -79,7 +79,7 @@ task: # initGather: * * * 31 2 ? # 每分钟执行 # syncDataToPLM: 0 0/30 * * * ? # 每30分钟执行 syncDataToPLM: 0 0 0 29 2 ? # 没4年执行 - sync_part_catalog_to_plm: 0 */1 * * * ? # 每1分钟执行 + sync_part_catalog_to_plm: 0 0 0 29 2 ? # 每1分钟执行 flag: false # 单点登录 diff --git a/src/main/resources/mapper/quotation/QuotationHeaderMapper.xml b/src/main/resources/mapper/quotation/QuotationHeaderMapper.xml index 326fd29d..32b35dda 100644 --- a/src/main/resources/mapper/quotation/QuotationHeaderMapper.xml +++ b/src/main/resources/mapper/quotation/QuotationHeaderMapper.xml @@ -181,7 +181,7 @@ AND customer_no like #{params.customerNo} - AND quotation_no like #{params.quotationNo} + AND concat(quotation_no,'-',version_code) like #{params.quotationNo} AND customer_inquiry_no like #{params.customerInquiryNo} diff --git a/src/main/resources/mapper/quote/SalesQuoteMapper.xml b/src/main/resources/mapper/quote/SalesQuoteMapper.xml new file mode 100644 index 00000000..d2db1f43 --- /dev/null +++ b/src/main/resources/mapper/quote/SalesQuoteMapper.xml @@ -0,0 +1,94 @@ + + + + + + + + + +