This commit is contained in:
xd 2024-08-08 11:05:22 +08:00
parent 61e74d35c8
commit 185ef59172
7 changed files with 221 additions and 8 deletions

View File

@ -813,6 +813,7 @@ public class QuotController extends BaseController
sysOaQuot.setQuotTongPrice(quot.getQuotTongPrice());
sysOaQuot.setQuotMatpriceDiff(quot.getQuotMatpriceDiff());
sysOaQuot.setQuotMatpriceDiff2(quot.getQuotMatpriceDiff2());
sysOaQuot.setQuotBjyRemark(quot.getQuotBjyRemark());
// 上传反馈清单
QuotFile quotFile = new QuotFile();

View File

@ -134,7 +134,8 @@ public class Quot extends BaseEntity
/** 报价单区分1报价生成询价单-传明细 2创建询价单-传附件) */
private String quotDistinguish;
/** 报价员备注 */
private String quotBjyRemark;
/** 技术协助 */
private String quotJsxzStandard;//技术协助-标准
@ -391,11 +392,12 @@ public class Quot extends BaseEntity
public String getQuotHandle() { return quotHandle; }
public void setQuotHandle(String quotHandle) { this.quotHandle = quotHandle; }
public String getQuotDistinguish() {return quotDistinguish;}
public void setQuotDistinguish(String quotDistinguish) {this.quotDistinguish = quotDistinguish;}
public String getQuotBjyRemark() { return quotBjyRemark; }
public void setQuotBjyRemark(String quotBjyRemark) { this.quotBjyRemark = quotBjyRemark; }
public List<QuotMaterial> getQuotMaterialList() { return quotMaterialList; }
public void setQuotMaterialList(List<QuotMaterial> quotMaterialList)

View File

@ -0,0 +1,138 @@
package com.ruoyi.quot.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* 报价对象 quot
*
* @author ruoyi
* @date 2024-04-01
*/
public class QuotSecDiff extends BaseEntity
{
private String quotCode;
/** 业务员 */
private String quotSalesmanName;
/** 客户名称 */
private String quotCustomerName;
/** 询价日期 */
private Date quotInquiryDate;
/** 项目名称 */
private String quotProject;
/** 报价日期 */
private Date quotQuotationDate;
/** 明细条数 */
private Integer quotMaterialsCount;
/** 总价 */
private String quotTotalPrice;
/** 审核人 */
private String quotCheckUserNickname;
/** 创建人 */
private String createName;
/** 处理时间 */
private String secDiff;
public String getQuotCode() {
return quotCode;
}
public void setQuotCode(String quotCode) {
this.quotCode = quotCode;
}
public String getQuotSalesmanName() {
return quotSalesmanName;
}
public void setQuotSalesmanName(String quotSalesmanName) {
this.quotSalesmanName = quotSalesmanName;
}
public String getQuotCustomerName() {
return quotCustomerName;
}
public void setQuotCustomerName(String quotCustomerName) {
this.quotCustomerName = quotCustomerName;
}
public Date getQuotInquiryDate() {
return quotInquiryDate;
}
public void setQuotInquiryDate(Date quotInquiryDate) {
this.quotInquiryDate = quotInquiryDate;
}
public String getQuotProject() {
return quotProject;
}
public void setQuotProject(String quotProject) {
this.quotProject = quotProject;
}
public Date getQuotQuotationDate() {
return quotQuotationDate;
}
public void setQuotQuotationDate(Date quotQuotationDate) {
this.quotQuotationDate = quotQuotationDate;
}
public Integer getQuotMaterialsCount() {
return quotMaterialsCount;
}
public void setQuotMaterialsCount(Integer quotMaterialsCount) {
this.quotMaterialsCount = quotMaterialsCount;
}
public String getQuotTotalPrice() {
return quotTotalPrice;
}
public void setQuotTotalPrice(String quotTotalPrice) {
this.quotTotalPrice = quotTotalPrice;
}
public String getQuotCheckUserNickname() {
return quotCheckUserNickname;
}
public void setQuotCheckUserNickname(String quotCheckUserNickname) {
this.quotCheckUserNickname = quotCheckUserNickname;
}
public String getCreateName() {
return createName;
}
public void setCreateName(String createName) {
this.createName = createName;
}
public String getSecDiff() {
BigDecimal value = new BigDecimal(secDiff);
BigDecimal noZeros = value.stripTrailingZeros();
String result = noZeros.toPlainString();
return result;
}
public void setSecDiff(String secDiff) {
this.secDiff = secDiff;
}
}

View File

@ -69,6 +69,9 @@ public class SysOaQuot extends BaseEntity
/** 总价 */
private String quotTotalPrice;
/** 报价员备注 */
private String quotBjyRemark;
/** OA审批状态 */
private String state;
@ -211,6 +214,10 @@ public class SysOaQuot extends BaseEntity
public void setQuotTotalPrice(String quotTotalPrice) { this.quotTotalPrice = quotTotalPrice; }
public String getQuotBjyRemark() { return quotBjyRemark; }
public void setQuotBjyRemark(String quotBjyRemark) { this.quotBjyRemark = quotBjyRemark; }
public String getState() { return state; }
public void setState(String state) { this.state = state; }

View File

@ -48,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
<result property="quotHandle" column="quot_handle" />
<result property="quotDistinguish" column="quot_distinguish" />
<result property="quotBjyRemark" column="quot_bjy_remark" />
<result property="quotJsxzStandard" column="quot_jsxz_standard" />
<result property="quotJsxzApprovalStatus" column="quot_jsxz_approval_status" />
@ -122,7 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
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_jsw_check_user_nickname,a.quot_bzr_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,a.quot_distinguish,
a.create_by, a.create_time, a.update_by, a.update_time, u.nick_name create_name,a.quot_handle,a.quot_distinguish,a.quot_bjy_remark,
a.quot_jsxz_standard,a.quot_jsxz_approval_status,a.quot_jsxz_chapter,
a.quot_jsxz_technical_requirement,a.quot_jsxz_group_values,a.quot_jsxz_confirm_id,
@ -260,6 +261,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotPrint != null and quotPrint != ''">quot_print,</if>
<if test="quotPrintUserName != null and quotPrintUserName != ''">quot_print_user_name,</if>
<if test="quotDistinguish != null and quotDistinguish != ''">quot_distinguish,</if>
<if test="quotBjyRemark != null and quotBjyRemark != ''">quot_bjy_remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null and updateBy != ''">update_by,</if>
@ -311,6 +313,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotPrint != null and quotPrint != ''">#{quotPrint},</if>
<if test="quotPrintUserName != null and quotPrintUserName != ''">#{quotPrintUserName},</if>
<if test="quotDistinguish != null and quotDistinguish != ''">#{quotDistinguish},</if>
<if test="quotBjyRemark != null and quotBjyRemark != ''">#{quotBjyRemark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null and updateBy != ''">#{updateBy},</if>
@ -356,6 +359,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotMatpriceDiff2 != null and quotMatpriceDiff2 != ''">quot_matprice_diff2,</if>
<if test="quotFkFile != null and quotFkFile != ''">quot_fk_file,</if>
<if test="quotTotalPrice != null and quotTotalPrice != ''">quot_total_price,</if>
<if test="quotBjyRemark != null and quotBjyRemark != ''">quot_bjy_remark,</if>
<if test="createTime != null">create_time,</if>
<if test="isFinish != null and isFinish != ''">isFinish,</if>
@ -379,6 +383,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotMatpriceDiff2 != null and quotMatpriceDiff2 != ''">#{quotMatpriceDiff2},</if>
<if test="quotFkFile != null and quotFkFile != ''">#{quotFkFile},</if>
<if test="quotTotalPrice != null and quotTotalPrice != ''">#{quotTotalPrice},</if>
<if test="quotBjyRemark != null and quotBjyRemark != ''">#{quotBjyRemark},</if>
<if test="createTime != null">#{createTime},</if>
<if test="isFinish != null and isFinish != ''">#{isFinish},</if>
@ -420,6 +425,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="quotPrintUserName != null and quotPrintUserName != ''">quot_print_user_name = #{quotPrintUserName},</if>
<if test="quotJswCheckUserNickname != null and quotJswCheckUserNickname != ''">quot_jsw_check_user_nickname = #{quotJswCheckUserNickname},</if>
<if test="quotBzrUserNickname != null and quotBzrUserNickname != ''">quot_bzr_user_nickname = #{quotBzrUserNickname},</if>
<if test="quotBjyRemark != null and quotBjyRemark != ''">quot_bjy_remark = #{quotBjyRemark},</if>
<if test="createBy != null and createBy != ''">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
@ -547,8 +553,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectStatisticsQuotList" parameterType="Quot" resultMap="QuotResult">
<include refid="selectQuotVo"/>
<select id="selectStatisticsQuotList" parameterType="Quot" resultType="QuotSecDiff">
<!--<include refid="selectQuotVo"/>
<where>
<if test="quotCode != null and quotCode != ''"> and quot_code like concat('%', #{quotCode}, '%')</if>
<if test="quotCustomerName != null and quotCustomerName != ''"> and quot_customer_name like concat('%', #{quotCustomerName}, '%')</if>
<if test="quotProject != null and quotProject != ''"> and quot_project like concat('%', #{quotProject}, '%')</if>
<if test="quotSalesmanName != null and quotSalesmanName != ''"> and quot_salesman_name like concat('%', #{quotSalesmanName}, '%')</if>
<if test="params.beginTime != null and params.beginTime != ''">&lt;!&ndash; 开始时间检索 &ndash;&gt;
and datediff(d, a.quot_quotation_date, #{params.beginTime}) <![CDATA[<=]]> 0
</if>
<if test="params.endTime != null and params.endTime != ''">&lt;!&ndash; 结束时间检索 &ndash;&gt;
and datediff(d, a.quot_quotation_date, #{params.endTime}) <![CDATA[>=]]> 0
</if>
and (a.quot_approval_status = '2' or (a.quot_approval_status = '3' and a.quot_oa_approval_status = '3'))
</where>
order by a.quot_quotation_date desc-->
select a.quot_code quotCode,a.quot_salesman_name quotSalesmanName,a.quot_customer_name quotCustomerName,
a.quot_project quotProject, a.quot_materials_count quotMaterialsCount,
a.quot_total_price quotTotalPrice,a.quot_inquiry_date quotInquiryDate,a.quot_quotation_date quotQuotationDate,
a.quot_check_user_nickname quotCheckUserNickname,
a.create_name createName,a.create_time createTime,
ROUND(
<!--询价时间不超过11:30 并且 报价时间超过13:00 报价时间-询价时间-1.5h-->
(case when a.dayDiff = 0 and a.secDiff1 <![CDATA[>=]]> 0 and a.secDiff2 <![CDATA[>=]]> 0 then a.secDiff1+a.secDiff2
<!--询价时间超过11:30 并且 不超过13:00 并且 报价时间超过13:00 报价时间-1点-->
when a.dayDiff = 0 and a.secDiff1 <![CDATA[<]]> 0 and a.secDiff3 <![CDATA[<]]> 0 and a.secDiff2 <![CDATA[>=]]> 0 then a.secDiff2
<!--报价时间不超过11:30 报价时间-询价时间*//**询价时间超过13:00 报价时间-询价时间-->
when a.dayDiff = 0 then a.secDiff
<!--跨一天 减14个小时-->
when a.dayDiff = 1 then a.secDiff-14*3600
<!--跨n,n>1天 减(n-1)*24个小时-->
when a.dayDiff > 1 then a.secDiff-(a.dayDiff-1)*24*3600
else 0 end) / 3600.00, 2) secDiff
FROM (
select a.quot_code,a.quot_salesman_name,a.quot_customer_name,a.quot_project, a.quot_materials_count,
a.quot_total_price,a.quot_inquiry_date,a.quot_quotation_date,u2.nick_name quot_check_user_nickname,
u.nick_name create_name,a.create_time,
<!--询价时间与11:30的差值-->
datediff(second,quot_inquiry_date,CONVERT(DATETIME, CONVERT(VARCHAR(10),quot_inquiry_date,111) + ' ' + '11:30:00')) secDiff1,
<!--报价时间与13:00的差值-->
datediff(second,CONVERT(DATETIME, CONVERT(VARCHAR(10),quot_quotation_date,111) + ' ' + '13:00:00'),quot_quotation_date) secDiff2,
<!--询价时间与13:00的差值-->
datediff(second,CONVERT(DATETIME, CONVERT(VARCHAR(10),quot_inquiry_date,111) + ' ' + '13:00:00'),quot_inquiry_date) secDiff3,
datediff(day,quot_inquiry_date,quot_quotation_date) dayDiff,
datediff(second,quot_inquiry_date,quot_quotation_date) secDiff
from quot a
left join sys_user u on u.user_name=a.create_by
left join sys_user u2 on u2.user_name=a.quot_check_user_name
<where>
<if test="quotCode != null and quotCode != ''"> and quot_code like concat('%', #{quotCode}, '%')</if>
<if test="quotCustomerName != null and quotCustomerName != ''"> and quot_customer_name like concat('%', #{quotCustomerName}, '%')</if>
@ -562,6 +618,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
and (a.quot_approval_status = '2' or (a.quot_approval_status = '3' and a.quot_oa_approval_status = '3'))
</where>
)a
order by a.quot_quotation_date desc
</select>

View File

@ -426,7 +426,14 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','HTB_QUOT'])">
<el-row :gutter="8" v-if="checkRole(['QUOT','PRICE_VERIFICATION','HTB_QUOT','admin'])">
<el-col :span="24" v-if="this.form.quotApprovalStatus != '0' && this.form.quotApprovalStatus != null">
<el-form-item label="报价员备注" prop="quotBjyRemark">
<el-input type="textarea" autosize v-model="form.quotBjyRemark" placeholder="报价组填写" :disabled="this.form.quotApprovalStatus == 2 || this.form.quotApprovalStatus == 3"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="8" v-if="checkRole(['QUOT','PRICE_VERIFICATION','SALES_MAN','HTB_QUOT','admin'])">
<el-col :span="14" v-if="this.form.quotApprovalStatus != '0' && this.form.quotApprovalStatus != null">
<el-form-item label="反馈说明" prop="quotFeedbackExplanation">
<el-input type="textarea" style="width:80%" autosize v-model="form.quotFeedbackExplanation" placeholder="报价组填写" :disabled="this.form.quotApprovalStatus == 2 || this.form.quotApprovalStatus == 3"/>
@ -439,7 +446,6 @@
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="left" class="customer_divider_text">清单附件(先保存再上传且必须是EXCEL文件)</el-divider>
<div v-hasPermi="['quot:quot:quotXjFile']">
<el-row :gutter="10" class="mb8">
@ -1291,6 +1297,7 @@ export default {
quotQuotationRequire: null,
quotFeedbackExplanation: null,
quotOAApprovalStatusRemark: null,
quotBjyRemark: null,
quotApprovalStatus: null,
quotPrintUserName: null,

View File

@ -87,6 +87,7 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="处理时长(小时)" align="center" prop="secDiff" width="150px"/>
</el-table>
</div>
</template>