Browse Source

bug修改

dev
wangfukang 2 years ago
parent
commit
45fd29b39c
  1. 2
      hiver-admin/src/main/resources/application.yml
  2. 16
      hiver-admin/test-output/test-report.html
  3. 15
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java
  4. 10
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java
  5. 48
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  6. 2
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java
  7. 184
      hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml
  8. 35
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java
  9. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java
  10. 15
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java

2
hiver-admin/src/main/resources/application.yml

@ -341,7 +341,7 @@ ignored:
- /hiver/app/productCategory/listByShopId - /hiver/app/productCategory/listByShopId
# 获取微信二维码 # 获取微信二维码
- /hiver/order/ow/getWechatQrcode - /hiver/order/ow/getWechatQrcode
- /app/shop/getShopInfoById - /hiver/app/shop/getShopInfoById
# 临时增加 # 临时增加
- /hiver/app/logisticsOrder/addLogisticsOrder - /hiver/app/logisticsOrder/addLogisticsOrder

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a> <a href="#"><span class="badge badge-primary">Hiver</span></a>
</li> </li>
<li class="m-r-10"> <li class="m-r-10">
<a href="#"><span class="badge badge-primary">九月 30, 2024 17:44:36</span></a> <a href="#"><span class="badge badge-primary">十月 08, 2024 19:35:03</span></a>
</li> </li>
</ul> </ul>
</div> </div>
@ -84,7 +84,7 @@
<div class="test-detail"> <div class="test-detail">
<span class="meta text-white badge badge-sm"></span> <span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p> <p class="name">passTest</p>
<p class="text-sm"><span>17:44:37 下午</span> / <span>0.02 secs</span></p> <p class="text-sm"><span>19:35:03 下午</span> / <span>0.015 secs</span></p>
</div> </div>
<div class="test-contents d-none"> <div class="test-contents d-none">
<div class="detail-head"> <div class="detail-head">
@ -92,9 +92,9 @@
<div class="info"> <div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div> <div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5> <h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>09.30.2024 17:44:37</span> <span class='badge badge-success'>10.08.2024 19:35:03</span>
<span class='badge badge-danger'>09.30.2024 17:44:37</span> <span class='badge badge-danger'>10.08.2024 19:35:03</span>
<span class='badge badge-default'>0.02 secs</span> <span class='badge badge-default'>0.015 secs</span>
</div> </div>
<div class="m-t-10 m-l-5"></div> <div class="m-t-10 m-l-5"></div>
</div> </div>
@ -104,7 +104,7 @@
<tbody> <tbody>
<tr class="event-row"> <tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td> <td><span class="badge log pass-bg">Pass</span></td>
<td>17:44:37</td> <td>19:35:03</td>
<td> <td>
Test passed Test passed
</td> </td>
@ -128,13 +128,13 @@
<div class="col-md-3"> <div class="col-md-3">
<div class="card"><div class="card-body"> <div class="card"><div class="card-body">
<p class="m-b-0">Started</p> <p class="m-b-0">Started</p>
<h3>九月 30, 2024 17:44:36</h3> <h3>十月 08, 2024 19:35:03</h3>
</div></div> </div></div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<div class="card"><div class="card-body"> <div class="card"><div class="card-body">
<p class="m-b-0">Ended</p> <p class="m-b-0">Ended</p>
<h3>九月 30, 2024 17:44:37</h3> <h3>十月 08, 2024 19:35:03</h3>
</div></div> </div></div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

15
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java

@ -1,11 +1,20 @@
package cc.hiver.core.logisticsaddressbook.mapper; package cc.hiver.core.logisticsaddressbook.mapper;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook; import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
public interface LogisticsAddressBookMapper extends BaseMapper<LogisticsAddressBook> { import java.util.List;
public interface LogisticsAddressBookMapper extends BaseMapper<LogisticsAddressBook> {
/**
* 根据名称支持拼音模糊匹配及手机号查询列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return List<LogisticsAddressBook>
*/
List<LogisticsAddressBook> getLogisticsAddressBookList(@Param("queryParams") LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
} }

10
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/LogisticsAddressBookService.java

@ -3,6 +3,7 @@ package cc.hiver.core.logisticsaddressbook.service;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook; import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo; import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -13,4 +14,13 @@ public interface LogisticsAddressBookService extends IService<LogisticsAddressBo
IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo); IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
/**
* 根据姓名可拼音匹配或者手机号模糊查询地址列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return JSONObject
*/
JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
} }

48
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java

@ -5,6 +5,7 @@ import cc.hiver.core.logisticsaddressbook.mapper.LogisticsAddressBookMapper;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService; import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo; import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -39,19 +40,19 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
@Override @Override
public boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder) { public boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder) {
List<LogisticsAddressBook> list = new ArrayList<>(); final List<LogisticsAddressBook> list = new ArrayList<>();
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条 //根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName()) stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName())
.eq(LogisticsAddressBook::getAddressType, 1) .eq(LogisticsAddressBook::getAddressType, 1)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getShipperMobile()) .eq(LogisticsAddressBook::getMobile, logisticsOrder.getShipperMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getShipperAddress()); .eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getShipperAddress());
Long count = getBaseMapper().selectCount(stuQuery); final Long count = getBaseMapper().selectCount(stuQuery);
if(count == 0){ if(count == 0){
// 创建发货人地址簿 // 创建发货人地址簿
LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook(); final LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
// 设置发货人名称,从物流订单的发货人名称中获取 // 设置发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName()); shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 设置地址信息,从物流订单的发货人地址获取 // 设置地址信息,从物流订单的发货人地址获取
@ -73,16 +74,16 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
list.add(shipperAddressBook); list.add(shipperAddressBook);
} }
LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName()) stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName())
.eq(LogisticsAddressBook::getAddressType, 2) .eq(LogisticsAddressBook::getAddressType, 2)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getReceiverMobile()) .eq(LogisticsAddressBook::getMobile, logisticsOrder.getReceiverMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress()); .eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress());
Long count2 = getBaseMapper().selectCount(stuQuery2); final Long count2 = getBaseMapper().selectCount(stuQuery2);
if(count2 == 0) { if(count2 == 0) {
// 创建收货人地址簿 // 创建收货人地址簿
LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook(); final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取 // 设置收货人名称,从物流订单的收货人名称中获取
reciverAddressBook.setShipperOrReceiverName(logisticsOrder.getReceiverName()); reciverAddressBook.setShipperOrReceiverName(logisticsOrder.getReceiverName());
// 设置地址信息,从物流订单的发货人地址获取 // 设置地址信息,从物流订单的发货人地址获取
@ -102,15 +103,15 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
list.add(reciverAddressBook); list.add(reciverAddressBook);
} }
// 调用save方法保存地址簿信息,返回保存结果 // 调用save方法保存地址簿信息,返回保存结果
Gson gson = new Gson(); final Gson gson = new Gson();
System.out.println(gson.toJson(list)); System.out.println(gson.toJson(list));
return saveBatch(list); return saveBatch(list);
} }
@Override @Override
public IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) { public IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
Page<LogisticsAddressBook> page = new Page<>(); final Page<LogisticsAddressBook> page = new Page<>();
LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>(); final LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>();
if(logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getKeyWord())){ if(logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getKeyWord())){
wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getKeyWord()).or() wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getKeyWord()).or()
.like(LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getKeyWord()); .like(LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getKeyWord());
@ -120,4 +121,31 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
return logisticsAddressBookMapper.selectPage(page,wrapper); return logisticsAddressBookMapper.selectPage(page,wrapper);
} }
/**
* 根据名称支持拼音模糊匹配及手机号查询列表
* @author 王富康
* @date 2024/10/8
* @param logisticsAddressBookQueryVo
* @return List<LogisticsAddressBook>
*/
@Override
public JSONObject getLogisticsAddressBookList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
final JSONObject jsonObject = new JSONObject();
// 必须包含addressType,
if(logisticsAddressBookQueryVo.getAddressType() == null){
jsonObject.set("flag","0");
jsonObject.set("msg","addressType参数为空");
return jsonObject;
}
if(StringUtils.isEmpty(logisticsAddressBookQueryVo.getShipperOrReceiverName()) && StringUtils.isEmpty(logisticsAddressBookQueryVo.getMobile())){
jsonObject.set("flag","0");
jsonObject.set("msg","姓名及电话必须传一个!");
return jsonObject;
}
final List<LogisticsAddressBook> logisticsAddressBookList = logisticsAddressBookMapper.getLogisticsAddressBookList(logisticsAddressBookQueryVo);
jsonObject.set("data",logisticsAddressBookList);
jsonObject.set("flag","1");
return jsonObject;
}
} }

2
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java

@ -21,6 +21,8 @@ public class LogisticsAddressBookQueryVo extends HiverBasePageQuery {
@ApiModelProperty(value = "收发货人名称") @ApiModelProperty(value = "收发货人名称")
private String shipperOrReceiverName; private String shipperOrReceiverName;
@ApiModelProperty(value = "地址类型 1发货地址信息 2收货地址信息")
private Integer addressType;
private String keyWord; private String keyWord;
} }

184
hiver-core/src/main/resources/mapper/LogisticsAddressBookMapper.xml

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.hiver.core.logisticsaddressbook.mapper.LogisticsAddressBookMapper">
<resultMap id="BaseResultMap" type="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="del_flag" jdbcType="INTEGER" property="delFlag" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="shipper_or_receiver_name" jdbcType="VARCHAR" property="shipperOrReceiverName" />
<result column="address_type" jdbcType="INTEGER" property="addressType" />
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
<result column="address_info" jdbcType="VARCHAR" property="addressInfo" />
<result column="company_id" jdbcType="VARCHAR" property="companyId" />
<result column="company_name" jdbcType="VARCHAR" property="companyName" />
</resultMap>
<sql id="Base_Column_List">
id, create_by, create_time, del_flag, update_by, update_time, shipper_or_receiver_name, address_type, mobile, address_info, company_id, company_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_logistics_address_book
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from t_logistics_address_book
where id = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
insert into t_logistics_address_book
(id, create_by, create_time, del_flag, update_by, update_time, shipper_or_receiver_name, address_type, mobile, address_info, company_id, company_name)
values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
#{shipperOrReceiverName,jdbcType=VARCHAR}, #{addressType,jdbcType=INTEGER}, #{mobile,jdbcType=VARCHAR},
#{addressInfo,jdbcType=VARCHAR}, #{companyId,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR})
</insert>
<update id="updateByExampleSelective" parameterType="map">
update t_logistics_address_book
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=VARCHAR},
</if>
<if test="record.createBy != null">
create_by = #{record.createBy,jdbcType=VARCHAR},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=TIMESTAMP},
</if>
<if test="record.delFlag != null">
del_flag = #{record.delFlag,jdbcType=INTEGER},
</if>
<if test="record.updateBy != null">
update_by = #{record.updateBy,jdbcType=VARCHAR},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
</if>
<if test="record.shipperOrReceiverName != null">
shipper_or_receiver_name = #{record.shipperOrReceiverName,jdbcType=VARCHAR},
</if>
<if test="record.addressType != null">
address_type = #{record.addressType,jdbcType=INTEGER},
</if>
<if test="record.mobile != null">
mobile = #{record.mobile,jdbcType=VARCHAR},
</if>
<if test="record.addressInfo != null">
address_info = #{record.addressInfo,jdbcType=VARCHAR},
</if>
<if test="record.companyId != null">
company_id = #{record.companyId,jdbcType=VARCHAR},
</if>
<if test="record.companyName != null">
company_name = #{record.companyName,jdbcType=VARCHAR},
</if>
</set>
</update>
<update id="updateByExample" parameterType="map">
update t_logistics_address_book
set id = #{record.id,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=TIMESTAMP},
del_flag = #{record.delFlag,jdbcType=INTEGER},
update_by = #{record.updateBy,jdbcType=VARCHAR},
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
shipper_or_receiver_name = #{record.shipperOrReceiverName,jdbcType=VARCHAR},
address_type = #{record.addressType,jdbcType=INTEGER},
mobile = #{record.mobile,jdbcType=VARCHAR},
address_info = #{record.addressInfo,jdbcType=VARCHAR},
company_id = #{record.companyId,jdbcType=VARCHAR},
company_name = #{record.companyName,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKeySelective" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
update t_logistics_address_book
<set>
<if test="createBy != null">
create_by = #{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
del_flag = #{delFlag,jdbcType=INTEGER},
</if>
<if test="updateBy != null">
update_by = #{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="shipperOrReceiverName != null">
shipper_or_receiver_name = #{shipperOrReceiverName,jdbcType=VARCHAR},
</if>
<if test="addressType != null">
address_type = #{addressType,jdbcType=INTEGER},
</if>
<if test="mobile != null">
mobile = #{mobile,jdbcType=VARCHAR},
</if>
<if test="addressInfo != null">
address_info = #{addressInfo,jdbcType=VARCHAR},
</if>
<if test="companyId != null">
company_id = #{companyId,jdbcType=VARCHAR},
</if>
<if test="companyName != null">
company_name = #{companyName,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook">
update t_logistics_address_book
set create_by = #{createBy,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
del_flag = #{delFlag,jdbcType=INTEGER},
update_by = #{updateBy,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=TIMESTAMP},
shipper_or_receiver_name = #{shipperOrReceiverName,jdbcType=VARCHAR},
address_type = #{addressType,jdbcType=INTEGER},
mobile = #{mobile,jdbcType=VARCHAR},
address_info = #{addressInfo,jdbcType=VARCHAR},
company_id = #{companyId,jdbcType=VARCHAR},
company_name = #{companyName,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
<!--管理商品分页列表-->
<select id="getLogisticsAddressBookList" resultMap="BaseResultMap" parameterType="cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo">
select
t.id, t.create_by,t.create_time,t.del_flag,t.update_by,t.update_time,
t.shipper_or_receiver_name, t.address_type, t.mobile, t.address_info, t.company_id, t.company_name
from t_logistics_address_book t
<where>
t.address_type = #{queryParams.addressType}
AND (
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>
t.shipper_or_receiver_name LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )
OR to_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', to_pinyin ( #{queryParams.shipperOrReceiverName} ), '%' )
OR to_initial_pinyin ( t.shipper_or_receiver_name ) LIKE CONCAT( '%', #{queryParams.shipperOrReceiverName}, '%' )
</if>
<if test='queryParams.mobile!=null and queryParams.mobile.trim() neq ""'>
<if test='queryParams.shipperOrReceiverName!=null and queryParams.shipperOrReceiverName.trim() neq ""'>
or
</if>
t.mobile LIKE CONCAT( '%', #{queryParams.mobile}, '%' )
</if>
)
</where>
ORDER BY
t.create_time desc
</select>
</mapper>

35
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java

@ -3,6 +3,9 @@ package cc.hiver.mall.purchaseocr.service.impl;
import cc.hiver.core.common.utils.CommonUtil; import cc.hiver.core.common.utils.CommonUtil;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.entity.User; import cc.hiver.core.entity.User;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.mall.common.constant.PurchaseConstant; import cc.hiver.mall.common.constant.PurchaseConstant;
import cc.hiver.mall.config.thread.AiPurchaseThread; import cc.hiver.mall.config.thread.AiPurchaseThread;
import cc.hiver.mall.config.thread.ThreadPoolConfiguration; import cc.hiver.mall.config.thread.ThreadPoolConfiguration;
@ -77,6 +80,9 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
@Autowired @Autowired
private SaleService saleService; private SaleService saleService;
@Autowired
private LogisticsAddressBookService logisticsAddressBookService;
@Override @Override
public JSONObject batchSave(PurchaseOciPictureAddVo purchaseOciPictureAddVo) { public JSONObject batchSave(PurchaseOciPictureAddVo purchaseOciPictureAddVo) {
@ -211,7 +217,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
final String resultContent = jsonObject.get("resultContent").toString(); final String resultContent = jsonObject.get("resultContent").toString();
final JSONArray json = JSON.parseArray(resultContent); final JSONArray json = JSON.parseArray(resultContent);
// 旧商品的id集合 // 旧商品的id集合
List<String> oldProductIdList = new ArrayList<>(); final List<String> oldProductIdList = new ArrayList<>();
for (int i = 0; i < json.size(); i++) { for (int i = 0; i < json.size(); i++) {
final JSONObject object = json.getJSONObject(i); final JSONObject object = json.getJSONObject(i);
String productSn = object.getString("productSn"); String productSn = object.getString("productSn");
@ -253,7 +259,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
// 20240928 app/sale/buyAi接口加个参数productId,如果传值了,查规格库存数的时候就查这款商品的 // 20240928 app/sale/buyAi接口加个参数productId,如果传值了,查规格库存数的时候就查这款商品的
product = productService.getById(singleProductId); product = productService.getById(singleProductId);
} }
String productId = product.getId(); final String productId = product.getId();
oldProductIdList.add(productId); oldProductIdList.add(productId);
// 查询商品所有的库存 // 查询商品所有的库存
final List<Stock> stockList = stockService.getProductStock(productId); final List<Stock> stockList = stockService.getProductStock(productId);
@ -638,6 +644,31 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
logisticsOrderOfAiVo.setPremium(premium); logisticsOrderOfAiVo.setPremium(premium);
final String objectName = object.getString("objectName"); final String objectName = object.getString("objectName");
logisticsOrderOfAiVo.setObjectName(objectName); logisticsOrderOfAiVo.setObjectName(objectName);
// 20241008 根据发货人信息或者收货人信息查询地址列表
// 发货人 shipperName,shipperMobile
final LogisticsAddressBookQueryVo logisticsAddressBookQueryVo = new LogisticsAddressBookQueryVo();
logisticsAddressBookQueryVo.setAddressType(1);
logisticsAddressBookQueryVo.setShipperOrReceiverName(shipperName);
logisticsAddressBookQueryVo.setMobile(shipperMobile);
final cn.hutool.json.JSONObject logisticsAddressBookList = logisticsAddressBookService.getLogisticsAddressBookList(logisticsAddressBookQueryVo);
if("1".equals(logisticsAddressBookList.get("flag"))){
final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) logisticsAddressBookList.get("data");
logisticsOrderOfAiVo.setShipperList(data);
}else{
log.info(logisticsAddressBookList.get("msg").toString());
}
// 收货人 receiverName,receiverMobile
final LogisticsAddressBookQueryVo receiverQueryVo = new LogisticsAddressBookQueryVo();
receiverQueryVo.setAddressType(2);
receiverQueryVo.setShipperOrReceiverName(receiverName);
receiverQueryVo.setMobile(receiverMobile);
final cn.hutool.json.JSONObject receiverList = logisticsAddressBookService.getLogisticsAddressBookList(receiverQueryVo);
if("1".equals(receiverList.get("flag"))){
final List<LogisticsAddressBook> data = (List<LogisticsAddressBook>) receiverList.get("data");
logisticsOrderOfAiVo.setReceiverList(data);
}else{
log.info(receiverList.get("msg").toString());
}
logisticsOrderOfAiVos.add(logisticsOrderOfAiVo); logisticsOrderOfAiVos.add(logisticsOrderOfAiVo);
} }
} catch (Exception e) { } catch (Exception e) {

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/vo/LogisticsOrderOfAiVo.java

@ -1,9 +1,11 @@
package cc.hiver.mall.purchaseocr.vo; package cc.hiver.mall.purchaseocr.vo;
import cc.hiver.core.logisticsaddressbook.entity.LogisticsAddressBook;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class LogisticsOrderOfAiVo { public class LogisticsOrderOfAiVo {
@ -14,12 +16,18 @@ public class LogisticsOrderOfAiVo {
@ApiModelProperty(value = "发货电话") @ApiModelProperty(value = "发货电话")
private String shipperMobile; private String shipperMobile;
@ApiModelProperty(value = "发货人列表")
private List<LogisticsAddressBook> shipperList;
@ApiModelProperty(value = "收货人") @ApiModelProperty(value = "收货人")
private String receiverName; private String receiverName;
@ApiModelProperty(value = "收货电话") @ApiModelProperty(value = "收货电话")
private String receiverMobile; private String receiverMobile;
@ApiModelProperty(value = "收货人列表")
private List<LogisticsAddressBook> receiverList;
@ApiModelProperty(value = "重量") @ApiModelProperty(value = "重量")
private BigDecimal weight; private BigDecimal weight;

15
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java

@ -2,7 +2,7 @@ package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.core.common.constant.CommonConstant; import cc.hiver.core.common.constant.CommonConstant;
import cc.hiver.core.common.constant.ProductConstant; import cc.hiver.core.common.constant.ProductConstant;
import cc.hiver.core.common.constant.UserConstant; import cc.hiver.core.common.constant.ShopUserConstant;
import cc.hiver.core.common.exception.HiverException; import cc.hiver.core.common.exception.HiverException;
import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
@ -26,9 +26,10 @@ import cc.hiver.mall.purchasereturn.entity.PurchaseReturnDetail;
import cc.hiver.mall.purchasereturn.service.PurchaseReturnDetailService; import cc.hiver.mall.purchasereturn.service.PurchaseReturnDetailService;
import cc.hiver.mall.purchasereturn.service.PurchaseReturnService; import cc.hiver.mall.purchasereturn.service.PurchaseReturnService;
import cc.hiver.mall.purchasereturn.vo.PurchaseReturnVo; import cc.hiver.mall.purchasereturn.vo.PurchaseReturnVo;
import cc.hiver.mall.service.ShopUserService;
import cc.hiver.mall.service.mybatis.*; import cc.hiver.mall.service.mybatis.*;
import cc.hiver.mall.utils.DateUtil; import cc.hiver.mall.utils.DateUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -84,6 +85,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
@Autowired @Autowired
private PurchaseReturnDetailService purchaseReturnDetailService; private PurchaseReturnDetailService purchaseReturnDetailService;
@Autowired
private ShopUserService shopUserService;
@Transactional @Transactional
@Override @Override
public Result putIn(PurchaseVo purchaseVo) { public Result putIn(PurchaseVo purchaseVo) {
@ -923,6 +928,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
productMap.putIfAbsent(product.getId(), product); productMap.putIfAbsent(product.getId(), product);
} }
// 获取需要新增的规格及属性集合 // 获取需要新增的规格及属性集合
// 获取当前登录人在当前店铺的身份
ShopUser shopUser = shopUserService.selectByUserIdAndShopId(user.getId(), shopId);
// 获取需要新增的规格信息 // 获取需要新增的规格信息
final Map<String, Map<String, List<String>>> stringListMap = new HashMap<>(); final Map<String, Map<String, List<String>>> stringListMap = new HashMap<>();
for (PurchaseDetail purchaseDetail : purchaseDetails) { for (PurchaseDetail purchaseDetail : purchaseDetails) {
@ -953,7 +960,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
stockQueryWrapper.eq("shop_id", shopId); stockQueryWrapper.eq("shop_id", shopId);
final List<Stock> productStockList = list(stockQueryWrapper); final List<Stock> productStockList = list(stockQueryWrapper);
if (purchaseDetail.getPurchasePrice() == null && user.getType().equals(UserConstant.USER_TYPE_NORMAL)) { if (purchaseDetail.getPurchasePrice() == null && Objects.equals(shopUser.getType(), ShopUserConstant.SHOP_ADMIN_COST[1])) {
// 未维护采购价,设置订单状态为待入库,这里是循环的,前端要控制有就全部都要有,没有就全部没有。 // 未维护采购价,设置订单状态为待入库,这里是循环的,前端要控制有就全部都要有,没有就全部没有。
// 设置为未入库,商品不计算平均采购价 // 设置为未入库,商品不计算平均采购价
purchase.setInStorageStatus(StockConstant.IN_STORAGE_STATUS[0]); purchase.setInStorageStatus(StockConstant.IN_STORAGE_STATUS[0]);
@ -1201,7 +1208,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
productService.saveOrUpdateBatch(updateProductList); productService.saveOrUpdateBatch(updateProductList);
// 更新供应商欠款信息及欠款记录 // 更新供应商欠款信息及欠款记录
//如果没有采购价 并且是普通用户的话,不保存记录 //如果没有采购价 并且是普通用户的话,不保存记录
if(CollectionUtil.isNotEmpty(purchaseVo.getPurchaseDetails()) && purchaseVo.getPurchaseDetails().get(0).getPurchasePrice() == null && !user.getType().equals(UserConstant.USER_TYPE_NORMAL)) { if (CollUtil.isNotEmpty(purchaseVo.getPurchaseDetails()) && purchaseVo.getPurchaseDetails().get(0).getPurchasePrice() != null && Objects.equals(shopUser.getType(), ShopUserConstant.SHOP_ADMIN_COST[0])) {
debtService.purchaseToDebt(purchase); debtService.purchaseToDebt(purchase);
} }
return ResultUtil.success("添加成功"); return ResultUtil.success("添加成功");

Loading…
Cancel
Save