From e8a4f8a710304d26ad62ccd8f8f8db59296bf6ce Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Tue, 13 Aug 2024 09:27:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/Impl/EamObjectServiceImpl.java | 1 - .../quote/controller/QuoteController.java | 66 ++++++ .../xujie/sys/modules/quote/entity/Quote.java | 115 ++++++++++ .../sys/modules/quote/mapper/QuoteMapper.java | 25 +++ .../modules/quote/service/QuoteService.java | 23 ++ .../quote/service/impl/QuoteServiceImpl.java | 90 ++++++++ src/main/resources/application-dev.yml | 1 - src/main/resources/mapper/pms/EamMapper.xml | 1 + .../resources/mapper/quote/QuoteMapper.xml | 199 ++++++++++++++++++ 9 files changed, 519 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/xujie/sys/modules/quote/controller/QuoteController.java create mode 100644 src/main/java/com/xujie/sys/modules/quote/entity/Quote.java create mode 100644 src/main/java/com/xujie/sys/modules/quote/mapper/QuoteMapper.java create mode 100644 src/main/java/com/xujie/sys/modules/quote/service/QuoteService.java create mode 100644 src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteServiceImpl.java create mode 100644 src/main/resources/mapper/quote/QuoteMapper.xml diff --git a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamObjectServiceImpl.java b/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamObjectServiceImpl.java index 3db095b0..fef6d8ed 100644 --- a/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamObjectServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/pms/service/Impl/EamObjectServiceImpl.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; -import static com.sun.webkit.network.URLs.newURL; /** * @description: 设备清单接口实现 diff --git a/src/main/java/com/xujie/sys/modules/quote/controller/QuoteController.java b/src/main/java/com/xujie/sys/modules/quote/controller/QuoteController.java new file mode 100644 index 00000000..13ffc0d8 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/quote/controller/QuoteController.java @@ -0,0 +1,66 @@ +package com.xujie.sys.modules.quote.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xujie.sys.common.utils.R; +import com.xujie.sys.modules.quote.entity.Quote; +import com.xujie.sys.modules.quote.service.QuoteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/quote") +public class QuoteController { + + @Autowired + private QuoteService quoteService; + + @PostMapping("/{no}/{size}") + public R queryQuotePage(@PathVariable Integer no, + @PathVariable Integer size, + @RequestBody Quote quote){ + IPage page = quoteService.queryQuotePage(no, size, quote); + return R.ok().put("rows", page.getRecords()).put("total", page.getTotal()); + } + + @PostMapping + public R queryQuoteList(@RequestBody Quote quote){ + return R.ok().put("rows", quoteService.queryQuoteList(quote)); + } + + @PostMapping("/{id}") + public R queryQuoteById(@PathVariable Long id) { + return R.ok().put("row", quoteService.queryQuoteById(id)); + } + + @PostMapping("/save") + public R saveQuote(@RequestBody Quote quote) { + quoteService.saveQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/update") + public R updateQuote(@RequestBody Quote quote) { + quoteService.updateQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/remove/{id}") + public R removeQuote(@PathVariable Long id) { + quoteService.removeById(id); + return R.ok("操作成功"); + } + + @PostMapping("/again") + public R againQuote(@RequestBody Quote quote) { + quoteService.againQuote(quote); + return R.ok("操作成功"); + } + + @PostMapping("/batch/save") + public R batchSaveQuote(@RequestBody List quotes) { + quoteService.batchSaveQuote(quotes); + return R.ok("操作成功"); + } +} diff --git a/src/main/java/com/xujie/sys/modules/quote/entity/Quote.java b/src/main/java/com/xujie/sys/modules/quote/entity/Quote.java new file mode 100644 index 00000000..90f6a0d5 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/quote/entity/Quote.java @@ -0,0 +1,115 @@ +package com.xujie.sys.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("plm_quote") +@Data +public class Quote { + + @TableId + private Long id; + + private String quoteNo; + + private String site; + + private String buNo; + + private String versionNo; + + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date quoteDate; + + private String quoteVersionNo; + + private String customerNo; + + private String projectNo; + + /** + * 采购专员 + */ + private String purchase; + + /** + * 报价专员 + */ + private String quoter; + + /** + * 币种 + */ + private String currency; + + private String status; + + private String customerInquiryNo; + + private String insideInquiryNo; + + /** + * 是否需要审批 + */ + private String requireApproval; + + /** + * 审批状态 + */ + private String approvalStatus; + + /** + * 是否需要tool + */ + private String requireToolFlag; + + private String active; + + private String createBy; + + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date createDate; + + private String updateBy; + + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date updateDate; + + private String remark; + + + /** + * ------------------(额外字段)---------------------- + */ + @TableField(exist = false) + private String customerDesc; + + @TableField(exist = false) + private String projectDesc; + + @TableField(exist = false) + private String buDesc; + + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + @TableField(exist = false) + private Integer buId; +} diff --git a/src/main/java/com/xujie/sys/modules/quote/mapper/QuoteMapper.java b/src/main/java/com/xujie/sys/modules/quote/mapper/QuoteMapper.java new file mode 100644 index 00000000..e530d72d --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/quote/mapper/QuoteMapper.java @@ -0,0 +1,25 @@ +package com.xujie.sys.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.xujie.sys.modules.base.entity.Bu; +import com.xujie.sys.modules.quote.entity.Quote; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +@Mapper +public interface QuoteMapper extends BaseMapper { + + IPage queryQuotePage(@Param("page") Page page,@Param("params") Quote quote); + List queryQuoteList(Quote quote); + + int batchSaveQuote(List quotes); + + Bu queryBuSiteById(Integer id); + + String queryQuoteNo(Quote quote); +} diff --git a/src/main/java/com/xujie/sys/modules/quote/service/QuoteService.java b/src/main/java/com/xujie/sys/modules/quote/service/QuoteService.java new file mode 100644 index 00000000..860e89c9 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/quote/service/QuoteService.java @@ -0,0 +1,23 @@ +package com.xujie.sys.modules.quote.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.xujie.sys.modules.quote.entity.Quote; + +import java.util.List; + +public interface QuoteService extends IService { + IPage queryQuotePage(Integer no, Integer size, Quote quote); + + List queryQuoteList(Quote quote); + + Quote queryQuoteById(Long id); + + void saveQuote(Quote quote); + + void updateQuote(Quote quote); + + void againQuote(Quote quote); + + void batchSaveQuote(List quotes); +} diff --git a/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteServiceImpl.java b/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteServiceImpl.java new file mode 100644 index 00000000..aae2f510 --- /dev/null +++ b/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteServiceImpl.java @@ -0,0 +1,90 @@ +package com.xujie.sys.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.xujie.sys.modules.base.entity.Bu; +import com.xujie.sys.modules.quote.entity.Quote; +import com.xujie.sys.modules.quote.mapper.QuoteMapper; +import com.xujie.sys.modules.quote.service.QuoteService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +public class QuoteServiceImpl extends ServiceImpl implements QuoteService { + + @Override + public IPage queryQuotePage(Integer no, Integer size, Quote quote) { + Page page = new Page<>(no, size); + return baseMapper.queryQuotePage(page, quote); + } + + @Override + public List queryQuoteList(Quote quote) { + return baseMapper.queryQuoteList(quote); + } + + @Override + public Quote queryQuoteById(Long id) { + Quote quote = new Quote(); + quote.setId(id); + List quotes = baseMapper.queryQuoteList(quote); + if (!quotes.isEmpty()){ + return quotes.get(0); + } + return null; + } + + @Override + @Transactional + public void saveQuote(Quote quote) { + if (StringUtils.isEmpty(quote.getBuId())){ + throw new RuntimeException("BU不能为空"); + } + // 1、获取BU对应Site + Bu bu = baseMapper.queryBuSiteById(quote.getBuId()); + quote.setSite(bu.getSite()); + quote.setBuNo(bu.getBuNo()); + // 2、获取报价单号 + String quoteNo = baseMapper.queryQuoteNo(quote); + quote.setQuoteNo("BJ"+genDateStr("yyyyMMdd")+quoteNo); + quote.setVersionNo("A001"); + quote.setQuoteVersionNo(quote.getQuoteNo() + "-" + quote.getVersionNo()); + quote.setCreateDate(new Date()); + save(quote); + } + + private String genDateStr(String format){ + LocalDate date = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); + return date.format(formatter); + } + + @Override + @Transactional + public void updateQuote(Quote quote) { + quote.setUpdateDate(new Date()); + updateById(quote); + } + + @Override + @Transactional + public void againQuote(Quote quote) { + // todo 校验参数,再次报价逻辑 + save(quote); + } + + @Override + @Transactional + public void batchSaveQuote(List quotes) { + baseMapper.batchSaveQuote(quotes); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e938a8c7..9371815e 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,7 +5,6 @@ spring: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver type: com.alibaba.druid.pool.DruidDataSource # url: jdbc:sqlserver://192.168.1.90:1433;databaseName=CKT_QMS_231017 - url: jdbc:sqlserver://192.168.1.90:1433;databaseName=CKT_MES_II_REAL username: sa password: XJsoft123 diff --git a/src/main/resources/mapper/pms/EamMapper.xml b/src/main/resources/mapper/pms/EamMapper.xml index a1da8865..6edafa20 100644 --- a/src/main/resources/mapper/pms/EamMapper.xml +++ b/src/main/resources/mapper/pms/EamMapper.xml @@ -2481,6 +2481,7 @@ + select q.id, + q.quote_no, + q.site, + q.bu_no, + q.version_no, + q.quote_date, + q.quote_version_no, + q.customer_no, + q.project_no, + q.purchase, + q.quoter, + q.currency, + q.status, + q.customer_inquiry_no, + q.inside_inquiry_no, + q.require_approval, + q.approval_status, + q.require_tool_flag, + q.active, + q.create_by, + q.create_date, + q.update_by, + q.update_date, + q.remark, + c.customer_desc, + p.project_desc, + b.bu_desc, + b.id as buId + from plm_quote q + left join plm_customer_information c on q.customer_no = c.customer_no and q.site = c.site + left join plm_project_info p on q.project_no = p.project_no and q.site = p.site + left join BU b on q.bu_no = b.bu_no and b.site = q.site + + q.site in (select site from eam_access_site where username = #{params.createBy}) + and (q.site + '-' + q.bu_no) in (select * from dbo.query_bu(#{params.createBy})) + + and q.id = #{params.id} + + + and q.quote_no = #{params.quoteNo} + + + and q.bu_no = #{params.buNo} + + + and q.customer_no = #{params.customerNo} + + + and q.project_no = #{params.projectNo} + + + and q.status = #{params.status} + + + and q.quote_version_no = #{params.quoteVersionNo} + + + and c.customer_desc like #{params.customerDesc} + + + and p.project_desc like #{params.projectDesc} + + + and q.purchase like #{params.purchase} + + + and q.quoter like #{params.quoter} + + + and q.customer_inquiry_no like #{params.customerInquiryNo} + + + and q.customer_inquiry_no like #{params.insideInquiryNo} + + + and q.quote_date >= #{params.startDate} + + + and q.quote_date <= #{params.endDate} + + + order by q.id desc + + + + + + insert into plm_quote (quote_no, site, bu_no, version_no, quote_date, quote_version_no, customer_no, project_no, + purchase, quoter, currency, status, customer_inquiry_no, inside_inquiry_no, + require_approval, approval_status, require_tool_flag, active, create_by, create_date, remark) + values + + (#{item.quoteNo},#{item.site},#{item.buNo},#{item.versionNo},#{item.quoteDate},#{item.quoteVersionNo},#{item.customerNo},#{item.projectNo}, + #{item.purchase},#{item.quoter},#{item.currency},#{item.status},#{item.customerInquiryNo},#{item.insideInquiryNo}, + #{item.requireApproval},#{item.approvalStatus},#{item.requireToolFlag},#{item.active},#{item.createBy},#{item.createDate},#{item.remark}) + + + + + + +