diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesEstimateController.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesEstimateController.java new file mode 100644 index 00000000..0fa5357c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/controller/SalesEstimateController.java @@ -0,0 +1,151 @@ +package com.ruoyi.sales.controller; + +import java.util.List; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.sales.domain.SalesEstimate; +import com.ruoyi.sales.service.ISalesEstimateService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 销售估价Controller + * + * @author 刘晓旭 + * @date 2024-08-05 + */ +@Controller +@RequestMapping("/sales/estimate") +public class SalesEstimateController extends BaseController +{ + private String prefix = "sales/estimate"; + + @Autowired + private ISalesEstimateService salesEstimateService; + + @RequiresPermissions("sales:estimate:view") + @GetMapping() + public String estimate() + { + return prefix + "/estimate"; + } + + /** + * 查询销售估价列表 + */ + @RequiresPermissions("sales:estimate:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(SalesEstimate salesEstimate) + { + startPage(); + List list = salesEstimateService.selectSalesEstimateList(salesEstimate); + return getDataTable(list); + } + + /** + * 导出销售估价列表 + */ + @RequiresPermissions("sales:estimate:export") + @Log(title = "销售估价", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(SalesEstimate salesEstimate) + { + List list = salesEstimateService.selectSalesEstimateList(salesEstimate); + ExcelUtil util = new ExcelUtil(SalesEstimate.class); + return util.exportExcel(list, "销售估价数据"); + } + + /** + * 新增销售估价 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存销售估价 + */ + @RequiresPermissions("sales:estimate:add") + @Log(title = "销售估价", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(SalesEstimate salesEstimate) + { + return toAjax(salesEstimateService.insertSalesEstimate(salesEstimate)); + } + + /** + * 修改销售估价 + */ + @GetMapping("/edit/{salesEstimateId}") + public String edit(@PathVariable("salesEstimateId") Long salesEstimateId, ModelMap mmap) + { + SalesEstimate salesEstimate = salesEstimateService.selectSalesEstimateById(salesEstimateId); + mmap.put("salesEstimate", salesEstimate); + return prefix + "/edit"; + } + + /** + * 修改保存销售估价 + */ + @RequiresPermissions("sales:estimate:edit") + @Log(title = "销售估价", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(SalesEstimate salesEstimate) + { + return toAjax(salesEstimateService.updateSalesEstimate(salesEstimate)); + } + + /** + * 删除销售估价 + */ + @RequiresPermissions("sales:estimate:remove") + @Log(title = "销售估价", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(salesEstimateService.deleteSalesEstimateByIds(ids)); + } + + /** + * 作废销售估价 + */ + @RequiresPermissions("sales:estimate:cancel") + @Log(title = "销售估价", businessType = BusinessType.CANCEL) + @GetMapping( "/cancel/{id}") + @ResponseBody + public AjaxResult cancel(@PathVariable("id") Long id){ + return toAjax(salesEstimateService.cancelSalesEstimateById(id)); + } + + /** + * 恢复销售估价 + */ + @RequiresPermissions("sales:estimate:restore") + @Log(title = "销售估价", businessType = BusinessType.RESTORE) + @GetMapping( "/restore/{id}") + @ResponseBody + public AjaxResult restore(@PathVariable("id")Long id) + { + return toAjax(salesEstimateService.restoreSalesEstimateById(id)); + } + + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimate.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimate.java new file mode 100644 index 00000000..73bc0b6d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/domain/SalesEstimate.java @@ -0,0 +1,304 @@ +package com.ruoyi.sales.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 销售估价对象 sales_estimate + * + * @author 刘晓旭 + * @date 2024-08-05 + */ +public class SalesEstimate extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 销售估价ID */ + private Long salesEstimateId; + + /** 估价单号 */ + @Excel(name = "估价单号") + private String salesEstimateCode; + + /** 用户ID */ + private Long userId; + + /** 业务人员 */ + @Excel(name = "业务人员") + private String businessMembers; + + /** 估价状态(0待工程、1待采购、2待总经理、3已完成) */ + @Excel(name = "估价状态", readConverterExp = "0=待工程、1待采购、2待总经理、3已完成") + private String estimateStatus; + + /** 客户代码id */ + @Excel(name = "客户代码id") + private String enterpriseCode; + + /** 客户名称 */ + @Excel(name = "客户名称") + private String enterpriseName; + + /** 物料合计 */ + @Excel(name = "物料合计") + private Long materialSum; + + /** 数量合计 */ + @Excel(name = "数量合计") + private Long enterpriseSum; + + /** 估价币种(1RMB、2美元) */ + @Excel(name = "估价币种", readConverterExp = "1=RMB、2美元") + private String commonCurrency; + + /** 美元汇率 */ + private BigDecimal usdRate; + + /** 不含税单价(RMB) */ + private BigDecimal noTaxRmb; + + /** 含税单价(RMB) */ + private BigDecimal taxRmb; + + /** 不含税总价(RMB) */ + @Excel(name = "不含税总价", readConverterExp = "R=MB") + private BigDecimal allNoTaxRmb; + + /** 含税总价(RMB) */ + @Excel(name = "含税总价", readConverterExp = "R=MB") + private BigDecimal allTaxRmb; + + /** 含税单价(美元) */ + private BigDecimal taxDollar; + + /** 不含税单价(美元) */ + private BigDecimal noTaxDollar; + + /** 含税总价(美元) */ + @Excel(name = "含税总价", readConverterExp = "美=元") + private BigDecimal allTaxDollar; + + /** 不含税总价(美元) */ + @Excel(name = "不含税总价", readConverterExp = "美=元") + private BigDecimal allNoTaxDollar; + + /** 定价日期 */ + private Date pricingDate; + + public void setSalesEstimateId(Long salesEstimateId) + { + this.salesEstimateId = salesEstimateId; + } + + public Long getSalesEstimateId() + { + return salesEstimateId; + } + public void setSalesEstimateCode(String salesEstimateCode) + { + this.salesEstimateCode = salesEstimateCode; + } + + public String getSalesEstimateCode() + { + return salesEstimateCode; + } + public void setUserId(Long userId) + { + this.userId = userId; + } + + public Long getUserId() + { + return userId; + } + public void setBusinessMembers(String businessMembers) + { + this.businessMembers = businessMembers; + } + + public String getBusinessMembers() + { + return businessMembers; + } + public void setEstimateStatus(String estimateStatus) + { + this.estimateStatus = estimateStatus; + } + + public String getEstimateStatus() + { + return estimateStatus; + } + public void setEnterpriseCode(String enterpriseCode) + { + this.enterpriseCode = enterpriseCode; + } + + public String getEnterpriseCode() + { + return enterpriseCode; + } + public void setEnterpriseName(String enterpriseName) + { + this.enterpriseName = enterpriseName; + } + + public String getEnterpriseName() + { + return enterpriseName; + } + public void setMaterialSum(Long materialSum) + { + this.materialSum = materialSum; + } + + public Long getMaterialSum() + { + return materialSum; + } + public void setEnterpriseSum(Long enterpriseSum) + { + this.enterpriseSum = enterpriseSum; + } + + public Long getEnterpriseSum() + { + return enterpriseSum; + } + public void setCommonCurrency(String commonCurrency) + { + this.commonCurrency = commonCurrency; + } + + public String getCommonCurrency() + { + return commonCurrency; + } + public void setUsdRate(BigDecimal usdRate) + { + this.usdRate = usdRate; + } + + public BigDecimal getUsdRate() + { + return usdRate; + } + public void setNoTaxRmb(BigDecimal noTaxRmb) + { + this.noTaxRmb = noTaxRmb; + } + + public BigDecimal getNoTaxRmb() + { + return noTaxRmb; + } + public void setTaxRmb(BigDecimal taxRmb) + { + this.taxRmb = taxRmb; + } + + public BigDecimal getTaxRmb() + { + return taxRmb; + } + public void setAllNoTaxRmb(BigDecimal allNoTaxRmb) + { + this.allNoTaxRmb = allNoTaxRmb; + } + + public BigDecimal getAllNoTaxRmb() + { + return allNoTaxRmb; + } + public void setAllTaxRmb(BigDecimal allTaxRmb) + { + this.allTaxRmb = allTaxRmb; + } + + public BigDecimal getAllTaxRmb() + { + return allTaxRmb; + } + public void setTaxDollar(BigDecimal taxDollar) + { + this.taxDollar = taxDollar; + } + + public BigDecimal getTaxDollar() + { + return taxDollar; + } + public void setNoTaxDollar(BigDecimal noTaxDollar) + { + this.noTaxDollar = noTaxDollar; + } + + public BigDecimal getNoTaxDollar() + { + return noTaxDollar; + } + public void setAllTaxDollar(BigDecimal allTaxDollar) + { + this.allTaxDollar = allTaxDollar; + } + + public BigDecimal getAllTaxDollar() + { + return allTaxDollar; + } + public void setAllNoTaxDollar(BigDecimal allNoTaxDollar) + { + this.allNoTaxDollar = allNoTaxDollar; + } + + public BigDecimal getAllNoTaxDollar() + { + return allNoTaxDollar; + } + public void setPricingDate(Date pricingDate) + { + this.pricingDate = pricingDate; + } + + public Date getPricingDate() + { + return pricingDate; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("salesEstimateId", getSalesEstimateId()) + .append("salesEstimateCode", getSalesEstimateCode()) + .append("userId", getUserId()) + .append("businessMembers", getBusinessMembers()) + .append("estimateStatus", getEstimateStatus()) + .append("enterpriseCode", getEnterpriseCode()) + .append("enterpriseName", getEnterpriseName()) + .append("materialSum", getMaterialSum()) + .append("enterpriseSum", getEnterpriseSum()) + .append("commonCurrency", getCommonCurrency()) + .append("usdRate", getUsdRate()) + .append("noTaxRmb", getNoTaxRmb()) + .append("taxRmb", getTaxRmb()) + .append("allNoTaxRmb", getAllNoTaxRmb()) + .append("allTaxRmb", getAllTaxRmb()) + .append("taxDollar", getTaxDollar()) + .append("noTaxDollar", getNoTaxDollar()) + .append("allTaxDollar", getAllTaxDollar()) + .append("allNoTaxDollar", getAllNoTaxDollar()) + .append("pricingDate", getPricingDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesEstimateMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesEstimateMapper.java new file mode 100644 index 00000000..3bf08e41 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/mapper/SalesEstimateMapper.java @@ -0,0 +1,77 @@ +package com.ruoyi.sales.mapper; + +import java.util.List; +import com.ruoyi.sales.domain.SalesEstimate; + +/** + * 销售估价Mapper接口 + * + * @author 刘晓旭 + * @date 2024-08-05 + */ +public interface SalesEstimateMapper +{ + /** + * 查询销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 销售估价 + */ + public SalesEstimate selectSalesEstimateById(Long salesEstimateId); + + /** + * 查询销售估价列表 + * + * @param salesEstimate 销售估价 + * @return 销售估价集合 + */ + public List selectSalesEstimateList(SalesEstimate salesEstimate); + + /** + * 新增销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + public int insertSalesEstimate(SalesEstimate salesEstimate); + + /** + * 修改销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + public int updateSalesEstimate(SalesEstimate salesEstimate); + + /** + * 删除销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + public int deleteSalesEstimateById(Long salesEstimateId); + + /** + * 批量删除销售估价 + * + * @param salesEstimateIds 需要删除的数据ID + * @return 结果 + */ + public int deleteSalesEstimateByIds(String[] salesEstimateIds); + + /** + * 作废销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + public int cancelSalesEstimateById(Long salesEstimateId); + + /** + * 恢复销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + public int restoreSalesEstimateById(Long salesEstimateId); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesEstimateService.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesEstimateService.java new file mode 100644 index 00000000..730a9374 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/ISalesEstimateService.java @@ -0,0 +1,75 @@ +package com.ruoyi.sales.service; + +import java.util.List; +import com.ruoyi.sales.domain.SalesEstimate; + +/** + * 销售估价Service接口 + * + * @author 刘晓旭 + * @date 2024-08-05 + */ +public interface ISalesEstimateService +{ + /** + * 查询销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 销售估价 + */ + public SalesEstimate selectSalesEstimateById(Long salesEstimateId); + + /** + * 查询销售估价列表 + * + * @param salesEstimate 销售估价 + * @return 销售估价集合 + */ + public List selectSalesEstimateList(SalesEstimate salesEstimate); + + /** + * 新增销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + public int insertSalesEstimate(SalesEstimate salesEstimate); + + /** + * 修改销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + public int updateSalesEstimate(SalesEstimate salesEstimate); + + /** + * 批量删除销售估价 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSalesEstimateByIds(String ids); + + /** + * 删除销售估价信息 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + public int deleteSalesEstimateById(Long salesEstimateId); + + /** + * 作废销售估价 + * @param salesEstimateId 销售估价ID + * @return + */ + int cancelSalesEstimateById(Long salesEstimateId); + + /** + * 恢复销售估价 + * @param salesEstimateId 销售估价ID + * @return + */ + int restoreSalesEstimateById(Long salesEstimateId); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java new file mode 100644 index 00000000..16aeb563 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java @@ -0,0 +1,126 @@ +package com.ruoyi.sales.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.ShiroUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sales.mapper.SalesEstimateMapper; +import com.ruoyi.sales.domain.SalesEstimate; +import com.ruoyi.sales.service.ISalesEstimateService; +import com.ruoyi.common.core.text.Convert; + +/** + * 销售估价Service业务层处理 + * + * @author 刘晓旭 + * @date 2024-08-05 + */ +@Service +public class SalesEstimateServiceImpl implements ISalesEstimateService +{ + @Autowired + private SalesEstimateMapper salesEstimateMapper; + + /** + * 查询销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 销售估价 + */ + @Override + public SalesEstimate selectSalesEstimateById(Long salesEstimateId) + { + return salesEstimateMapper.selectSalesEstimateById(salesEstimateId); + } + + /** + * 查询销售估价列表 + * + * @param salesEstimate 销售估价 + * @return 销售估价 + */ + @Override + public List selectSalesEstimateList(SalesEstimate salesEstimate) + { + return salesEstimateMapper.selectSalesEstimateList(salesEstimate); + } + + /** + * 新增销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + @Override + public int insertSalesEstimate(SalesEstimate salesEstimate) + { + String loginName = ShiroUtils.getLoginName(); + salesEstimate.setCreateBy(loginName); + salesEstimate.setCreateTime(DateUtils.getNowDate()); + return salesEstimateMapper.insertSalesEstimate(salesEstimate); + } + + /** + * 修改销售估价 + * + * @param salesEstimate 销售估价 + * @return 结果 + */ + @Override + public int updateSalesEstimate(SalesEstimate salesEstimate) + { + String loginName = ShiroUtils.getLoginName(); + salesEstimate.setUpdateBy(loginName); + salesEstimate.setUpdateTime(DateUtils.getNowDate()); + return salesEstimateMapper.updateSalesEstimate(salesEstimate); + } + + /** + * 删除销售估价对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteSalesEstimateByIds(String ids) + { + return salesEstimateMapper.deleteSalesEstimateByIds(Convert.toStrArray(ids)); + } + + /** + * 删除销售估价信息 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + @Override + public int deleteSalesEstimateById(Long salesEstimateId) + { + return salesEstimateMapper.deleteSalesEstimateById(salesEstimateId); + } + + /** + * 作废销售估价 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + @Override + public int cancelSalesEstimateById(Long salesEstimateId) + { + return salesEstimateMapper.cancelSalesEstimateById(salesEstimateId); + } + + /** + * 恢复销售估价信息 + * + * @param salesEstimateId 销售估价ID + * @return 结果 + */ + @Override + public int restoreSalesEstimateById(Long salesEstimateId) + { + return salesEstimateMapper.restoreSalesEstimateById(salesEstimateId); + } +} diff --git a/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateMapper.xml b/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateMapper.xml new file mode 100644 index 00000000..a5b0e8f6 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/sales/SalesEstimateMapper.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select sales_estimate_id, sales_estimate_code, user_id, business_members, estimate_status, enterprise_code, enterprise_name, material_sum, enterprise_sum, common_currency, usd_rate, no_tax_rmb, tax_rmb, all_no_tax_rmb, all_tax_rmb, tax_dollar, no_tax_dollar, all_tax_dollar, all_no_tax_dollar, pricing_date, create_by, create_time, update_by, update_time, remark from sales_estimate + + + + + + + + insert into sales_estimate + + sales_estimate_code, + user_id, + business_members, + estimate_status, + enterprise_code, + enterprise_name, + material_sum, + enterprise_sum, + common_currency, + usd_rate, + no_tax_rmb, + tax_rmb, + all_no_tax_rmb, + all_tax_rmb, + tax_dollar, + no_tax_dollar, + all_tax_dollar, + all_no_tax_dollar, + pricing_date, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{salesEstimateCode}, + #{userId}, + #{businessMembers}, + #{estimateStatus}, + #{enterpriseCode}, + #{enterpriseName}, + #{materialSum}, + #{enterpriseSum}, + #{commonCurrency}, + #{usdRate}, + #{noTaxRmb}, + #{taxRmb}, + #{allNoTaxRmb}, + #{allTaxRmb}, + #{taxDollar}, + #{noTaxDollar}, + #{allTaxDollar}, + #{allNoTaxDollar}, + #{pricingDate}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update sales_estimate + + sales_estimate_code = #{salesEstimateCode}, + user_id = #{userId}, + business_members = #{businessMembers}, + estimate_status = #{estimateStatus}, + enterprise_code = #{enterpriseCode}, + enterprise_name = #{enterpriseName}, + material_sum = #{materialSum}, + enterprise_sum = #{enterpriseSum}, + common_currency = #{commonCurrency}, + usd_rate = #{usdRate}, + no_tax_rmb = #{noTaxRmb}, + tax_rmb = #{taxRmb}, + all_no_tax_rmb = #{allNoTaxRmb}, + all_tax_rmb = #{allTaxRmb}, + tax_dollar = #{taxDollar}, + no_tax_dollar = #{noTaxDollar}, + all_tax_dollar = #{allTaxDollar}, + all_no_tax_dollar = #{allNoTaxDollar}, + pricing_date = #{pricingDate}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where sales_estimate_id = #{salesEstimateId} + + + + delete from sales_estimate where sales_estimate_id = #{salesEstimateId} + + + + delete from sales_estimate where sales_estimate_id in + + #{salesEstimateId} + + + + + update sales_estimate set del_flag = '1' where sales_estimate_id = #{salesEstimateId} + + + + update sales_estimate set del_flag = '0' where sales_estimate_id = #{salesEstimateId} + + + \ No newline at end of file