diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java index 56866f0..7145fc8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/quot/QuotController.java @@ -834,20 +834,23 @@ public class QuotController extends BaseController } //下点超5.2 提醒 - BigDecimal tpxd = BigDecimal.ZERO; + BigDecimal tpxd = BigDecimal.ONE; List materials = quot.getQuotMaterialList(); if(materials!=null&&materials.size()>0){ - for(QuotMaterial quotMaterial:materials){ + /*for(QuotMaterial quotMaterial:materials){ BigDecimal matQuotTp = quotMaterial.getMatQuotTp(); if(BigDecimal.ZERO.compareTo(matQuotTp)<0){ tpxd = matQuotTp; break; } - } + }*/ + BigDecimal matQuotTp = materials.get(0).getMatQuotTp(); + tpxd = matQuotTp; } String matQuotTp = configService.selectConfigByKey("quot.allow.matQuotTp"); - if(tpxd.compareTo(new BigDecimal(matQuotTp))>0 && "0".equals(quot_oa_approval_status)){ + BigDecimal matQuotTp2 = BigDecimal.ONE.subtract(new BigDecimal(matQuotTp).divide(new BigDecimal("100"))); + if(tpxd.compareTo(matQuotTp2) < 0 && "0".equals(quot_oa_approval_status)){ return error("特批下点数超"+matQuotTp+"个点,请走OA审批流程"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java index 9c2a120..8521d01 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/redBook/RedBookController.java @@ -40,6 +40,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -267,23 +268,52 @@ public class RedBookController extends BaseController public AjaxResult madeXjQuot(HttpServletResponse response, @RequestBody OAQuot quot) { Quot xjquot = new Quot(); - File excelFile = null; + List materials = new ArrayList(); + QuotMaterial xjquotMaterials = new QuotMaterial(); + /*File excelFile = null;*/ try{ xjquot.setQuotId(UUID.fastUUID().toString()); String quotCode = redBookService.getCode("BJD"); xjquot.setQuotCode(quotCode); - xjquot.setQuotApprovalStatus("0"); - xjquot.setQuotSalesmanCode(getUsername()); - xjquot.setQuotSalesmanBm(getLoginUser().getUser().getSapUserBm()); - xjquot.setQuotSalesmanName(getLoginUser().getUser().getNickName()); - xjquot.setQuotSalesmanDeptId(getLoginUser().getUser().getDept().getDeptId()+""); - xjquot.setQuotSalesmanDeptName(getLoginUser().getUser().getDept().getDeptName()); + xjquot.setQuotApprovalStatus("0");//询价单状态设置为 待提交 + xjquot.setQuotSalesmanCode(getUsername());//业务员id + xjquot.setQuotSalesmanBm(getLoginUser().getUser().getSapUserBm());//业务员编码 + xjquot.setQuotSalesmanName(getLoginUser().getUser().getNickName());//业务员名称 + xjquot.setQuotSalesmanDeptId(getLoginUser().getUser().getDept().getDeptId()+"");//部门id + xjquot.setQuotSalesmanDeptName(getLoginUser().getUser().getDept().getDeptName());//部门名称 + xjquot.setQuotRbDateUid(quot.getRbDateUid());//调价日期 xjquot.setCreateBy(getUsername()); - iQuotService.insertQuot(xjquot); List list = quot.getSelectedResultData(); + /** ===================================插入询价单明细表==================================*/ + int quotMaterialsCount = 0;//明细条数 + BigDecimal quotTotalPrice = BigDecimal.ZERO;//报价金额小计 + for(OAQuotProduct op:list){ + xjquotMaterials = new QuotMaterial(); + xjquotMaterials.setMatXingh(op.getName_1());//型号 + xjquotMaterials.setMatGuig(op.getSpec());//规格 + xjquotMaterials.setMatDiany(op.getVoltage());//电压 + xjquotMaterials.setMatDanw(op.getStu());//单位 + xjquotMaterials.setMatSl(op.getCount());//数量 + xjquotMaterials.setMatPrice(new BigDecimal(op.getPrice()));//红本价 + xjquotMaterials.setMatPerc(op.getPer());//一次折扣 + xjquotMaterials.setMatPerc2(op.getPer2());//二次折扣 + xjquotMaterials.setMatQuotPrice(op.getSetPrice());//报价单价 + xjquotMaterials.setMatQuotAllPrice(op.getAllPrice());//报价金额 - File directory = new File("xjQuotFile/"); + xjquotMaterials.setIndex(op.getIndex()); + materials.add(xjquotMaterials); + quotMaterialsCount++; + quotTotalPrice = quotTotalPrice.add(xjquotMaterials.getMatQuotAllPrice()); + } + xjquot.setQuotMaterialsCount(quotMaterialsCount); + xjquot.setQuotTotalPrice(String.valueOf(quotTotalPrice.setScale(2, RoundingMode.HALF_UP))); + xjquot.setQuotMaterialList(materials); + iQuotService.insertQuot(xjquot); + + /** ===================================插入询价单明细表==================================*/ + /** ===================================产品明细生成附件==================================*/ + /*File directory = new File("xjQuotFile/"); // 如果文件夹不存在,则创建文件夹 if (!directory.exists()) { directory.mkdir(); @@ -292,7 +322,7 @@ public class RedBookController extends BaseController File file = excelUtil.exportXjQuotExcel(response,excelFile,xjquot,list); MultipartFile multipartFile = convert(file); - /** 上传清单附件 **/ + // 上传清单附件 String relation_id = xjquot.getQuotId(); if(!StringUtils.isEmpty(relation_id)){ if (!multipartFile.isEmpty()) @@ -320,8 +350,9 @@ public class RedBookController extends BaseController }else{ return error("系统异常,询价单号为空!"); } - /** 上传清单附件 **/ - FileUtils.delete(excelFile); + // 上传清单附件 + FileUtils.delete(excelFile);*/ + /** ===================================产品明细生成附件==================================*/ }catch(Exception e){ return error("系统异常"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotJswController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotJswController.java index 8d93a20..37f803b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotJswController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotJswController.java @@ -18,6 +18,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; @@ -161,8 +163,12 @@ public class quotJswController extends BaseController { q.setQuotLvPrice(quot.getQuotLvPrice()); q.setQuotTongPrice(quot.getQuotTongPrice()); q.setQuotMatpriceDiff(quot.getQuotMatpriceDiff()); + q.setQuotJswCheckUserNickname(quot.getQuotJswCheckUserNickname());//金思维审核人 q.setQuotJswApprovalStatus("2"); + + int quotMaterialsCount = 0;//明细条数 + BigDecimal quotTotalPrice = BigDecimal.ZERO;//报价金额小计 List qmaterials = new ArrayList(); QuotMaterial quotMaterial = new QuotMaterial(); for(quotMaterialModel model:materials){ @@ -183,8 +189,12 @@ public class quotJswController extends BaseController { quotMaterial.setXh(model.getXh()); quotMaterial.setIndex(model.getIndex()); qmaterials.add(quotMaterial); - } + quotMaterialsCount++; + quotTotalPrice = quotTotalPrice.add(quotMaterial.getMatQuotAllPrice()); + } + q.setQuotMaterialsCount(quotMaterialsCount); + q.setQuotTotalPrice(String.valueOf(quotTotalPrice.setScale(2, RoundingMode.HALF_UP))); q.setQuotMaterialList(qmaterials); quotService.updateQuot(q); }catch(Exception e){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java index efdb07c..7065711 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/quot/quotModel.java @@ -21,6 +21,9 @@ public class quotModel { @ApiModelProperty("整单料价价差率") private String quotMatpriceDiff;//整单料价价差率 + @ApiModelProperty("金思维审核人") + private String quotJswCheckUserNickname; + @ApiModelProperty("产品明细") private List quotMaterial;//明细 @@ -64,6 +67,10 @@ public class quotModel { this.quotMatpriceDiff = quotMatpriceDiff; } + public String getQuotJswCheckUserNickname() { return quotJswCheckUserNickname; } + + public void setQuotJswCheckUserNickname(String quotJswCheckUserNickname) { this.quotJswCheckUserNickname = quotJswCheckUserNickname; } + public List getQuotMaterial() { return quotMaterial; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java index 96260b4..f4479b6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/utils/rbExcel/excelUtil.java @@ -408,7 +408,12 @@ public class excelUtil { String QuotXjrq = DateUtils.dateTime(quot.getQuotInquiryDate());//询价日期 String QuotBjrq = DateUtils.dateTime(new Date());//报价日期 - String[] bjs = {"询价单位:"+QuotCustomer,"业务联系人:"+QuotLxr,"项目名称:"+QuotProject,"联 系 电 话:"+QuotLxrdh,"询价日期:"+QuotXjrq,"编 制:","报价日期:"+QuotBjrq,"审 核:"}; + String QuotBzr = quot.getQuotCheckUserNickname();//编制人 + QuotBzr = StringUtils.isEmpty(QuotBzr)?"":QuotBzr; + String QuotShr = quot.getQuotJswCheckUserNickname();//审核人 + QuotShr = StringUtils.isEmpty(QuotShr)?"":QuotShr; + + String[] bjs = {"询价单位:"+QuotCustomer,"业务联系人:"+QuotLxr,"项目名称:"+QuotProject,"联 系 电 话:"+QuotLxrdh,"询价日期:"+QuotXjrq,"编 制:"+QuotBzr,"报价日期:"+QuotBjrq,"审 核:"+QuotShr}; int k=0; while(k|]", "_"); + sanitized = sanitized.replaceAll("\\.", "_"); + sanitized = sanitized.replaceAll("[#%]", "_"); + // 去除中间的空格 + sanitized = sanitized.replaceAll("\\s+", ""); + // 去除开头的空格 + sanitized = sanitized.replaceAll("^\\s+", ""); + // 去除结尾的空格 + sanitized = sanitized.replaceAll("\\s+$", ""); + // 应用其他特殊字符的替换规则... + return sanitized; } public static File getAbsoluteFile(String uploadDir, String fileName) throws IOException diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java index d04f524..ba9e6b9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/Quot.java @@ -85,6 +85,9 @@ public class Quot extends BaseEntity /** 明细条数 */ private Integer quotMaterialsCount; + /** 调价日期 */ + private String quotRbDateUid; + /** 铝价 */ private String quotLvPrice; @@ -112,6 +115,9 @@ public class Quot extends BaseEntity /** 审核人 */ private String quotCheckUserNickname; + /** 金思维审核人 */ + private String quotJswCheckUserNickname; + /** 提交状态 */ @Excel(name = "提交状态",dictType = "quot_approval_status") private String quotApprovalStatus; @@ -301,6 +307,9 @@ public class Quot extends BaseEntity public Integer getQuotMaterialsCount() { return quotMaterialsCount; } public void setQuotMaterialsCount(Integer quotMaterialsCount) { this.quotMaterialsCount = quotMaterialsCount; } + public String getQuotRbDateUid() { return quotRbDateUid; } + + public void setQuotRbDateUid(String quotRbDateUid) { this.quotRbDateUid = quotRbDateUid; } public String getQuotLvPrice() { return quotLvPrice; } public void setQuotLvPrice(String quotLvPrice) { this.quotLvPrice = quotLvPrice; } @@ -349,6 +358,9 @@ public class Quot extends BaseEntity { return quotCheckUserName; } + public String getQuotJswCheckUserNickname() { return quotJswCheckUserNickname; } + + public void setQuotJswCheckUserNickname(String quotJswCheckUserNickname) { this.quotJswCheckUserNickname = quotJswCheckUserNickname; } public void setQuotCheckUserNickname(String quotCheckUserNickname) { this.quotCheckUserNickname = quotCheckUserNickname; } public String getQuotCheckUserNickname() diff --git a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/QuotMaterial.java b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/QuotMaterial.java index ad9c4f6..a8de819 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/quot/domain/QuotMaterial.java +++ b/ruoyi-system/src/main/java/com/ruoyi/quot/domain/QuotMaterial.java @@ -53,6 +53,12 @@ public class QuotMaterial extends BaseEntity /** 红本价 */ private BigDecimal matPrice; + /** 一次折扣 */ + private BigDecimal matPerc; + + /** 二次折扣 */ + private BigDecimal matPerc2; + /** 报价 */ private BigDecimal matQuotPrice; @@ -138,6 +144,12 @@ public class QuotMaterial extends BaseEntity public void setMatMatprice(BigDecimal matMatprice) { this.matMatprice = matMatprice; } public BigDecimal getMatPrice() { return matPrice; } + public BigDecimal getMatPerc() { return matPerc; } + public void setMatPerc(BigDecimal matPerc) { this.matPerc = matPerc; } + + public BigDecimal getMatPerc2() { return matPerc2; } + public void setMatPerc2(BigDecimal matPerc2) { this.matPerc2 = matPerc2; } + public void setMatPrice(BigDecimal matPrice) { this.matPrice = matPrice; } public BigDecimal getMatQuotPrice() { return matQuotPrice; } diff --git a/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml b/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml index a991f8c..ec2986d 100644 --- a/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/quot/QuotMapper.xml @@ -28,8 +28,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -90,6 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -114,7 +118,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.quot_customer_name,a.quot_salesman_dept_id, a.quot_salesman_dept_name, a.quot_address, a.quot_contacts, a.quot_phone, a.quot_inquiry_date, a.quot_project, a.quot_quotation_date, a.quot_quotation_from, a.quot_quotation_require, a.quot_feedback_explanation, a.quot_quantity, a.quot_total_price, - a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_approval_status,a.quot_materials_count, + a.quot_check_user_name, u2.nick_name quot_check_user_nickname,a.quot_jsw_check_user_nickname, a.quot_approval_status,a.quot_materials_count,a.quot_rbDateUid, a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_matprice_diff2,a.quot_print,a.quot_print_user_name,u3.nick_name quot_print_user_nickName, a.create_by, a.create_time, a.update_by, a.update_time, u.nick_name create_name,a.quot_handle, @@ -161,7 +165,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select a.quot_id, a.quot_code,a.quot_jsw_code, a.quot_salesman_code, a.quot_salesman_bm, a.quot_salesman_name, a.quot_customer_bm,a.quot_customer_name, a.quot_salesman_dept_id, a.quot_salesman_dept_name, a.quot_address, a.quot_contacts, a.quot_phone, a.quot_inquiry_date, a.quot_project, a.quot_quotation_date, a.quot_quotation_from, a.quot_quotation_require, a.quot_feedback_explanation, - a.quot_quantity, a.quot_total_price, a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_approval_status, + a.quot_quantity, a.quot_total_price, a.quot_check_user_name, u2.nick_name quot_check_user_nickname, a.quot_jsw_check_user_nickname,a.quot_approval_status,a.quot_rbDateUid, a.quot_materials_count,a.quot_lv_price,a.quot_tong_price,a.quot_matprice_diff,a.quot_matprice_diff2,a.quot_print,a.quot_print_user_name,u3.nick_name quot_print_user_nickName, a.create_by, a.create_time, a.update_by, a.update_time,a.quot_handle, @@ -184,6 +188,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.mat_remark as sub_mat_remark, b.mat_matprice as sub_mat_matprice, b.mat_price as sub_mat_price, + b.mat_perc as sub_mat_perc, + b.mat_perc2 as sub_mat_perc2, b.mat_quot_price as sub_mat_quot_price, b.mat_quot_tp as sub_mat_quot_tp, @@ -201,8 +207,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by b.number - + select top 1 quot_id from quot where quot_code = #{quotCode} @@ -239,6 +245,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" quot_check_user_name, quot_approval_status, quot_materials_count, + quot_rbDateUid, quot_lv_price, quot_tong_price, quot_matprice_diff, @@ -288,6 +295,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{quotCheckUserName}, #{quotApprovalStatus}, #{quotMaterialsCount}, + #{quotRbDateUid}, #{quotLvPrice}, #{quotTongPrice}, #{quotMatpriceDiff}, @@ -392,12 +400,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" quot_check_user_name = #{quotCheckUserName}, quot_approval_status = #{quotApprovalStatus}, quot_materials_count = #{quotMaterialsCount}, + quot_rbDateUid = #{quotRbDateUid}, quot_lv_price = #{quotLvPrice}, quot_tong_price = #{quotTongPrice}, quot_matprice_diff = #{quotMatpriceDiff}, quot_matprice_diff2 = #{quotMatpriceDiff2}, quot_print = #{quotPrint}, quot_print_user_name = #{quotPrintUserName}, + quot_jsw_check_user_nickname = #{quotJswCheckUserNickname}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy}, @@ -442,9 +452,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - insert into quot_material( mat_id, mat_xingh, mat_guig, mat_diany,mat_standard, mat_danw, mat_sl,mat_remark, quot_id,xh,number,mat_matprice,mat_price,mat_quot_price,mat_quot_tp,mat_quot_allPrice,mat_matprice_diff) values + insert into quot_material( mat_id, mat_xingh, mat_guig, mat_diany,mat_standard, mat_danw, mat_sl,mat_remark, quot_id,xh,number,mat_matprice,mat_price,mat_perc,mat_perc2,mat_quot_price,mat_quot_tp,mat_quot_allPrice,mat_matprice_diff) values - ( #{item.matId}, #{item.matXingh}, #{item.matGuig}, #{item.matDiany}, #{item.matStandard}, #{item.matDanw}, cast(#{item.matSl,jdbcType=DECIMAL} as decimal(18,3)),#{item.matRemark}, #{item.quotId}, #{item.xh}, #{item.index}, cast(#{item.matMatprice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matQuotPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matQuotTp,jdbcType=DECIMAL} as decimal(18,3)),cast(#{item.matQuotAllPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matMatpriceDiff,jdbcType=DECIMAL} as decimal(18,3))) + ( #{item.matId}, #{item.matXingh}, #{item.matGuig}, #{item.matDiany}, #{item.matStandard}, #{item.matDanw}, cast(#{item.matSl,jdbcType=DECIMAL} as decimal(18,3)),#{item.matRemark}, #{item.quotId}, #{item.xh}, #{item.index}, cast(#{item.matMatprice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matPerc,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.matPerc2,jdbcType=DECIMAL} as decimal(18,2)),cast(#{item.matQuotPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matQuotTp,jdbcType=DECIMAL} as decimal(18,4)),cast(#{item.matQuotAllPrice,jdbcType=DECIMAL} as decimal(18,3)), cast(#{item.matMatpriceDiff,jdbcType=DECIMAL} as decimal(18,3))) diff --git a/ruoyi-ui/src/views/quot/quot/index.vue b/ruoyi-ui/src/views/quot/quot/index.vue index 5bf1ca2..b777a89 100644 --- a/ruoyi-ui/src/views/quot/quot/index.vue +++ b/ruoyi-ui/src/views/quot/quot/index.vue @@ -185,7 +185,9 @@ > + - + - + + + + + + + @@ -1060,6 +1068,8 @@ diff --git a/ruoyi-ui/src/views/redBook/productSelect.vue b/ruoyi-ui/src/views/redBook/productSelect.vue index 238477f..3677024 100644 --- a/ruoyi-ui/src/views/redBook/productSelect.vue +++ b/ruoyi-ui/src/views/redBook/productSelect.vue @@ -818,6 +818,14 @@ madeXjQuot(this.form).then(response => { this.$modal.msgSuccess("生成询价单成功,单号:"+response.data.quotCode); this.madeQuotDis = false; + + // 跳转至询价单列表页面并打开详情页 + const info = {quotId : response.data.quotId}; + this.$router.push({ + path:'/quot/quot/index', + name: 'Quot', + query: info + }) }); } }, diff --git a/ruoyi-ui/src/views/redBook/quots.vue b/ruoyi-ui/src/views/redBook/quots.vue index dce6a77..e4ef3e2 100644 --- a/ruoyi-ui/src/views/redBook/quots.vue +++ b/ruoyi-ui/src/views/redBook/quots.vue @@ -43,7 +43,7 @@ - +