jsk 报价

This commit is contained in:
skjia 2025-07-20 15:12:02 +08:00
parent 35857fad71
commit 03e8f82a95
9 changed files with 178 additions and 19 deletions

View File

@ -2,6 +2,9 @@ package com.bonus.canteen.core.ims.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.bonus.canteen.core.ims.domain.Inquiry;
import com.bonus.canteen.core.ims.domain.InquiryDetail;
import com.bonus.common.log.enums.OperaType;
//import com.bonus.canteen.core.ims.common.annotation.PreventRepeatSubmit;
import io.swagger.annotations.Api;
@ -55,7 +58,7 @@ public class QuoteController extends BaseController {
@ApiOperation(value = "导出报价详情列表")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:quote:export")
@SysLog(title = "报价详情", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出报价详情")
@SysLog(title = "报价详情", businessType = OperaType.EXPORT, logType = 1,module = "报价管理->导出报价详情")
@PostMapping("/export")
public void export(HttpServletResponse response, Quote quote) {
List<Quote> list = quoteService.selectQuoteList(quote);
@ -79,7 +82,7 @@ public class QuoteController extends BaseController {
@ApiOperation(value = "新增报价详情")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:quote:add")
@SysLog(title = "报价详情", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增报价详情")
@SysLog(title = "报价详情", businessType = OperaType.INSERT, logType = 1,module = "报价管理->新增报价详情")
@PostMapping
public AjaxResult add(@RequestBody Quote quote) {
try {
@ -95,23 +98,31 @@ public class QuoteController extends BaseController {
@ApiOperation(value = "修改报价详情")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:quote:edit")
@SysLog(title = "报价详情", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改报价详情")
@SysLog(title = "报价详情", businessType = OperaType.UPDATE, logType = 1,module = "报价管理->修改报价详情")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody Quote quote) {
public AjaxResult edit(@RequestBody Inquiry quote) {
try {
return toAjax(quoteService.updateQuote(quote));
} catch (Exception e) {
return error(e.getMessage());
}
}
/**
* 获取询价单详细信息
*/
@ApiOperation(value = "获取询价单明细信息")
//@RequiresPermissions("ims:inquiry:query")
@PostMapping(value = "/detail")
public AjaxResult getInfo(@RequestBody InquiryDetail quote) {
return success(quoteService.selectInquiryDetailByInquiryId(quote));
}
/**
* 删除报价详情
*/
@ApiOperation(value = "删除报价详情")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:quote:remove")
@SysLog(title = "报价详情", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除报价详情")
@SysLog(title = "报价详情", businessType = OperaType.DELETE, logType = 1,module = "报价管理->删除报价详情")
@PostMapping("/del/{quoteIds}")
public AjaxResult remove(@PathVariable Long[] quoteIds) {
return toAjax(quoteService.deleteQuoteByQuoteIds(quoteIds));

View File

@ -69,7 +69,7 @@ public class Inquiry extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "期望交货时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date requestArrivalTime;
private Date arrivalTime;
/** 询价备注 */
@Excel(name = "询价备注")
@ApiModelProperty(value = "询价备注")
@ -122,4 +122,5 @@ public class Inquiry extends BaseEntity {
private String searchValue;
private String inquiryState;
private String orderStatus;
private String supplierNames;
}

View File

@ -57,7 +57,11 @@ public class InquiryDetail extends BaseEntity {
@Excel(name = "采购数量")
@ApiModelProperty(value = "采购数量")
private BigDecimal purNum;
private String quoteNum;
private String supplierIds;
private String supplierId;
private String totalPrice;
private String singlePrice;
private String areaId ;
private String area ;

View File

@ -23,14 +23,14 @@ public class Quote extends BaseEntity {
/** 报价主键id */
private Long quoteId;
/** 价供应商主键id */
@Excel(name = "价供应商主键id")
@ApiModelProperty(value = "价供应商主键id")
/** 价供应商主键id */
@Excel(name = "价供应商主键id")
@ApiModelProperty(value = "价供应商主键id")
private Long inquirySupplierId;
/** 价明细主键id */
@Excel(name = "价明细主键id")
@ApiModelProperty(value = "价明细主键id")
/** 价明细主键id */
@Excel(name = "价明细主键id")
@ApiModelProperty(value = "价明细主键id")
private Long inquiryDetailId;
/** 报价数量 */
@ -47,6 +47,6 @@ public class Quote extends BaseEntity {
@Excel(name = "单价")
@ApiModelProperty(value = "单价")
private Long singlePrice;
private Long inquiryId;
}

View File

@ -1,6 +1,8 @@
package com.bonus.canteen.core.ims.mapper;
import java.util.List;
import com.bonus.canteen.core.ims.domain.InquiryDetail;
import com.bonus.canteen.core.ims.domain.Quote;
/**
@ -26,6 +28,7 @@ public interface QuoteMapper {
*/
public List<Quote> selectQuoteList(Quote quote);
public List<InquiryDetail> selectInquiryDetailByInquiryId(InquiryDetail quote);
/**
* 新增报价详情
*
@ -57,4 +60,5 @@ public interface QuoteMapper {
* @return 结果
*/
public int deleteQuoteByQuoteIds(Long[] quoteIds);
public int delQuote(Long inquiryId);
}

View File

@ -1,6 +1,9 @@
package com.bonus.canteen.core.ims.service;
import java.util.List;
import com.bonus.canteen.core.ims.domain.Inquiry;
import com.bonus.canteen.core.ims.domain.InquiryDetail;
import com.bonus.canteen.core.ims.domain.Quote;
/**
@ -26,6 +29,8 @@ public interface IQuoteService {
*/
public List<Quote> selectQuoteList(Quote quote);
public List<InquiryDetail> selectInquiryDetailByInquiryId(InquiryDetail quote);
/**
* 新增报价详情
*
@ -40,7 +45,7 @@ public interface IQuoteService {
* @param quote 报价详情
* @return 结果
*/
public int updateQuote(Quote quote);
public int updateQuote(Inquiry quote);
/**
* 批量删除报价详情

View File

@ -1,6 +1,11 @@
package com.bonus.canteen.core.ims.service.impl;
import java.util.List;
import com.bonus.canteen.core.ims.domain.Inquiry;
import com.bonus.canteen.core.ims.domain.InquiryDetail;
import com.bonus.canteen.core.ims.domain.InquirySupplier;
import com.bonus.canteen.core.ims.mapper.InquirySupplierMapper;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,6 +24,8 @@ import com.bonus.canteen.core.ims.service.IQuoteService;
public class QuoteServiceImpl implements IQuoteService {
@Autowired
private QuoteMapper quoteMapper;
@Autowired
private InquirySupplierMapper inquirySupplierMapper;
/**
* 查询报价详情
@ -42,6 +49,10 @@ public class QuoteServiceImpl implements IQuoteService {
return quoteMapper.selectQuoteList(quote);
}
@Override
public List<InquiryDetail> selectInquiryDetailByInquiryId(InquiryDetail quote) {
return quoteMapper.selectInquiryDetailByInquiryId(quote);
}
/**
* 新增报价详情
*
@ -65,10 +76,32 @@ public class QuoteServiceImpl implements IQuoteService {
* @return 结果
*/
@Override
public int updateQuote(Quote quote) {
public int updateQuote(Inquiry quote) {
quote.setUpdateTime(DateUtils.getNowDate());
try {
return quoteMapper.updateQuote(quote);
List<InquiryDetail> list=quote.getDetailList();
InquirySupplier iInquirySupplier=new InquirySupplier();
iInquirySupplier.setSupplierId(quote.getSupplierId());
iInquirySupplier.setArrivalTime(quote.getArrivalTime());
Long allnum=0L;
if(list!=null&&list.size()>0){
quoteMapper.delQuote(quote.getInquiryId());
for(InquiryDetail vo:list){
Quote addquote=new Quote();
addquote.setInquiryId(quote.getInquiryId());
addquote.setInquiryDetailId(vo.getInquiryDetailId());
addquote.setQuoteNum(vo.getPurNum());
addquote.setTotalPrice((Long.parseLong(vo.getTotalPrice())/100L));
addquote.setSinglePrice((Integer.parseInt(vo.getSinglePrice())/100L));
addquote.setInquirySupplierId(Long.parseLong(quote.getSupplierId()));
addquote.setCreateTime(DateUtils.getNowDate());
allnum=allnum+(Long.parseLong(vo.getTotalPrice())/100L);
quoteMapper.insertQuote(addquote);
}
}
iInquirySupplier.setQuoteAmount(allnum+"");
inquirySupplierMapper.updateInquirySupplier(iInquirySupplier);
return 1;
} catch (Exception e) {
throw new ServiceException(e.getMessage());
}

View File

@ -26,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="supplierName" column="supplier_name" />
<result property="supplierNames" column="supplier_names" />
</resultMap>
<resultMap type="com.bonus.canteen.core.ims.domain.InquiryDetail" id="InquiryDetailResult">
<result property="inquiryId" column="inquiry_id" />
@ -68,6 +69,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="materialTotalNum" column="material_total_num" />
<result property="purNum" column="purchase_num" />
<result property="notes" column="notes" />
<result property="quoteNum" column="quote_num" />
<result property="totalPrice" column="total_price" />
<result property="singlePrice" column="single_price" />
<result property="inquiryDetailId" column="inquiry_detail_id" />
</resultMap>
<sql id="selectInquiryVo">
@ -88,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
aa.request_arrival_time, aa.inquiry_notes, aa.phone, aa.link_man, aa.address, aa.bid_total_price, aa.supplier_id,
bb.area_name as area, aa.create_by, aa.create_time, aa.update_by, aa.update_time,case when cc.bid_status=3 then dd.supplier_name else '' end as supplier_name,
GROUP_CONCAT(cc.inquiry_supplier_id ) as supplier_ids,
GROUP_CONCAT(dd.supplier_name ) as supplier_names,
sum(case when cc.bid_status=2 then 1 else 0 end) as inquirySupplierNum,
sum(case when cc.bid_status=1 then 1 else 0 end) as supplierNum
from ims_inquiry aa
@ -120,6 +126,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
aa.request_arrival_time, aa.inquiry_notes, aa.phone, aa.link_man, aa.address, aa.bid_total_price, aa.supplier_id,
bb.area_name as area, aa.create_by, aa.create_time, aa.update_by, aa.update_time,case when cc.bid_status=3 then dd.supplier_name else '' end as supplier_name,
GROUP_CONCAT(cc.inquiry_supplier_id ) as supplier_ids,
GROUP_CONCAT(dd.supplier_name ) as supplier_names,
sum(case when cc.bid_status=2 then 1 else 0 end) as inquirySupplierNum,
sum(case when cc.bid_status=1 then 1 else 0 end) as supplierNum
from ims_inquiry aa
@ -131,7 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectInquiryDetailByInquiryId" parameterType="Long" resultMap="InquiryDetailResult">
SELECT aa.inquiry_id,aa.purchase_num,aa.notes,aa.inquiry_code,bb.*
SELECT aa.inquiry_id,aa.inquiry_detail_id,aa.purchase_num,aa.notes,aa.inquiry_code,bb.*,cc.quote_num,cc.total_price,cc.single_price
FROM ims_inquiry_detail aa
LEFT JOIN (
select cm.material_id, material_name, material_code,cm.img_url,
@ -156,6 +163,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from ims_inventory
group by material_id) ii on ii.material_id = cm.material_id
) bb on aa.material_id =bb.material_id
left join (
select bb.inquiry_id,aa.inquiry_detail_id,aa.quote_num,aa.total_price,aa.single_price from ims_quote aa
left join ims_inquiry_detail bb on aa.inquiry_detail_id=bb.inquiry_detail_id
left join ims_inquiry_supplier cc on bb.inquiry_id=cc.inquiry_id
where cc.bid_status=3
) cc on aa.inquiry_detail_id=cc.inquiry_detail_id
where aa.inquiry_id = #{inquiryId}
</select>

View File

@ -15,6 +15,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="com.bonus.canteen.core.ims.domain.InquiryDetail" id="InquiryDetailResult">
<result property="inquiryId" column="inquiry_id" />
<result property="areaId" column="area_id" />
<result property="inquiryCode" column="inquiry_code" />
<result property="area" column="area" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="materialId" column="material_id" />
<result property="areaId" column="area_id" />
<result property="materialName" column="material_name" />
<result property="materialCode" column="material_code" />
<result property="imgUrl" column="img_url" />
<result property="nutritionId" column="nutrition_id" />
<result property="materialTypeId" column="material_type_id" />
<result property="nutritionTypeId" column="nutrition_type_id" />
<result property="goodsType" column="goods_type" />
<result property="barCode" column="bar_code" />
<result property="unitId" column="unit_id" />
<result property="salePrice" column="sale_price" />
<result property="unitPrice" column="unit_price" />
<result property="salesMode" column="sales_mode" />
<result property="shelfLifeType" column="shelf_life_type" />
<result property="shelfLifeDays" column="shelf_life_days" />
<result property="purPriceCeiling" column="pur_price_ceiling" />
<result property="bigCategoryId" column="big_category_id" />
<result property="size" column="size" />
<result property="description" column="description" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="nutritionName" column="nutrition_name" />
<result property="materialTypeName" column="material_type_name" />
<result property="area" column="area_name" />
<result property="nutritionTypeName" column="nutrition_type_name" />
<result property="unitName" column="unit_name" />
<result property="materialTotalNum" column="material_total_num" />
<result property="purNum" column="purchase_num" />
<result property="notes" column="notes" />
<result property="quoteNum" column="quote_num" />
<result property="totalPrice" column="total_price" />
<result property="singlePrice" column="single_price" />
<result property="inquiryDetailId" column="inquiry_detail_id" />
</resultMap>
<sql id="selectQuoteVo">
select quote_id, inquiry_supplier_id, inquiry_detail_id, quote_num, total_price, single_price, create_by, create_time, update_by, update_time from ims_quote
@ -30,6 +76,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="singlePrice != null "> and single_price = #{singlePrice}</if>
</where>
</select>
<select id="selectInquiryDetailByInquiryId" parameterType="com.bonus.canteen.core.ims.domain.Quote" resultMap="InquiryDetailResult">
SELECT aa.inquiry_id,aa.inquiry_detail_id,aa.purchase_num,aa.notes,aa.inquiry_code,bb.*,cc.quote_num,cc.total_price,cc.single_price
FROM ims_inquiry_detail aa
LEFT JOIN (
select cm.material_id, material_name, material_code,cm.img_url,
cm.goods_type, bar_code,
sale_price, unit_price, sales_mode, shelf_life_type, shelf_life_days,
pur_price_ceiling, big_category_id, size, cm.description,cm.create_by,
cm.create_time, cm.update_by, cm.update_time,
cm.nutrition_id,cn.nutrition_name,
cmt.material_type_id, cmt.material_type_name,
a.area_id, a.area_name,
cm.nutrition_type_id, cnt.nutrition_type_name,
iu.unit_name,cm.unit_id,
ii.material_total_num
from cook_material cm
left join cook_material_type cmt on cm.material_type_id = cmt.material_type_id
left join cook_nutrition_type cnt on cm.nutrition_type_id = cnt.nutrition_type_id
left join cook_nutrition cn on cm.nutrition_id = cn.nutrition_id
left join ims_unit iu on cm.unit_id = iu.unit_id
left join basic_area a on cm.area_id = a.area_id
left join
(select material_id, sum(material_num) as material_total_num
from ims_inventory
group by material_id) ii on ii.material_id = cm.material_id
) bb on aa.material_id =bb.material_id
left join (
select bb.inquiry_id,aa.inquiry_detail_id,aa.quote_num,aa.total_price,aa.single_price
from ims_quote aa
left join ims_inquiry_detail bb on aa.inquiry_detail_id=bb.inquiry_detail_id
left join ims_inquiry_supplier cc on bb.inquiry_id=cc.inquiry_id
where aa.inquiry_supplier_id=#{supplierId}
) cc on aa.inquiry_detail_id=cc.inquiry_detail_id
left join ims_inquiry_supplier dd on aa.inquiry_id=dd.inquiry_id
where aa.inquiry_id = #{inquiryId} and dd.inquiry_supplier_id=#{supplierId}
</select>
<select id="selectQuoteByQuoteId" parameterType="Long" resultMap="QuoteResult">
<include refid="selectQuoteVo"/>
@ -48,6 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="inquiryId != null">inquiry_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="inquirySupplierId != null">#{inquirySupplierId},</if>
@ -59,6 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="inquiryId != null">inquiry_Id,</if>
</trim>
</insert>
@ -88,4 +173,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{quoteId}
</foreach>
</delete>
<delete id="delQuote" parameterType="Long">
delete from ims_quote where inquiry_id=#{inquiryId}
</delete>
</mapper>