1.完善盘点单审核相关逻辑

feature-order-fix
x_z 3 years ago
parent eb300dec08
commit 0a0ce35c80

@ -88,4 +88,18 @@ public class InvCountOrderController {
return invCountOrderService.submitAudit(id);
}
/**
*
*
* @param filterInvCountOrderRequest
* @return
*/
@PostMapping("/invCount/order/updateCountOrderStatus")
public BaseResponse updateCountOrderStatus(@RequestBody FilterInvCountOrderRequest filterInvCountOrderRequest) {
if (null == filterInvCountOrderRequest || StrUtil.isBlank(filterInvCountOrderRequest.getId()) || null == filterInvCountOrderRequest.getStatus()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderService.updateCountOrderStatus(filterInvCountOrderRequest.getId(), filterInvCountOrderRequest.getStatus());
}
}

@ -65,4 +65,20 @@ public interface InvCountCodesDao {
* @return
*/
Long selectCountByCodeAndOrderId(@Param("code") String code, @Param("orderIdFk") String orderIdFk);
/**
*
*
* @param orderId
*/
void resetCountFiledValue(@Param("orderId") String orderId);
/**
* ID
*
* @param orderIdFk
* @param productId
* @return
*/
List<InvCountCodes> selectByOrderIdAndProductId(@Param("orderIdFk") String orderIdFk, @Param("productId") String productId);
}

@ -74,4 +74,19 @@ public interface InvCountOrderDetailDao {
* @return
*/
InvCountOrderDetail selectByOrderIdAndNameCode(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode);
/**
*
*
* @param orderId
* @return
*/
List<InvCountOrderDetail> selectByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param orderId
*/
void resetCountFiledValue(@Param("orderId") String orderId);
}

@ -72,4 +72,15 @@ public interface InvProductDetailDao {
* @return
*/
InvProductDetailEntity selectByInvAndCode(BindInvSpaceRequest bindInvSpaceRequest);
/**
* ID
*
* @param invStorageCode
* @param invWarehouseCode
* @param invSpaceCode
* @param productId
* @return
*/
List<String> selectCodeByInvCodeAndProductId(@Param("invStorageCode") String invStorageCode, @Param("invWarehouseCode") String invWarehouseCode, @Param("invSpaceCode") String invSpaceCode, @Param("productId") String productId);
}

@ -28,6 +28,6 @@ public class InvCountCodes {
/**
* 0 1
*/
private Boolean status;
private Integer status;
}

@ -6,6 +6,11 @@ import lombok.Data;
@Data
public class FilterInvCountOrderRequest extends ListPageRequest {
/**
* id
*/
private String id;
/**
*
*/

@ -41,4 +41,13 @@ public interface InvCountOrderService {
* @return
*/
BaseResponse submitAudit(String id);
/**
*
*
* @param id
* @param status
* @return
*/
BaseResponse updateCountOrderStatus(String id, Integer status);
}

@ -8,8 +8,11 @@ import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.dao.inventory.InvCountCodesDao;
import com.glxp.api.admin.dao.inventory.InvCountOrderDao;
import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao;
import com.glxp.api.admin.dao.inventory.InvProductDetailDao;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.inventory.InvCountCodes;
import com.glxp.api.admin.entity.inventory.InvCountOrder;
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
import com.glxp.api.admin.req.inventory.FilterInvCountOrderRequest;
import com.glxp.api.admin.res.inventory.InvCountOrderResponse;
import com.glxp.api.admin.service.auth.CustomerService;
@ -42,6 +45,8 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
private GennerOrderUtils gennerOrderUtils;
@Resource
private CustomerService customerService;
@Resource
private InvProductDetailDao invProductDetailDao;
@Override
public List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
@ -74,6 +79,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
AuthAdmin user = customerService.getUserBean();
invCountOrder.setCreateUser(user.getUserName());
invCountOrder.setCreateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
invCountOrderDao.insert(invCountOrder);
} else {
InvCountOrder oldData = invCountOrderDao.selectByOrderId(invCountOrder.getOrderId());
@ -105,6 +111,60 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
//更新状态
invCountOrder.setStatus(1);
invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
//查询单据详情,计算盘点盈亏状态
List<InvCountOrderDetail> detailList = invCountOrderDetailDao.selectByOrderId(invCountOrder.getOrderId());
for (InvCountOrderDetail invCountOrderDetail : detailList) {
int diff = invCountOrderDetail.getInvNum() - invCountOrderDetail.getCountNum();
if (diff > 0) {
invCountOrderDetail.setLossNum(Math.abs(diff));
invCountOrderDetail.setStatus(0); //盘亏
} else if (diff < 0) {
invCountOrderDetail.setProfitNum(Math.abs(diff));
invCountOrderDetail.setStatus(1); //盘盈
} else {
invCountOrderDetail.setStatus(2); //平
}
//查询此产品的条码列表,判断此产品在库存中是多还是少
List<InvCountCodes> codesList = invCountCodesDao.selectByOrderIdAndProductId(invCountOrderDetail.getOrderIdFk(), invCountOrderDetail.getProductId());
//查询库存中此产品的码数据,用来判断盘单据条码是多码还是少码
List<String> invDetailCodes = invProductDetailDao.selectCodeByInvCodeAndProductId(invCountOrder.getInvStorageCode(), invCountOrder.getInvWarehouseCode(), invCountOrder.getInvSpaceCode(), invCountOrderDetail.getProductId());
for (InvCountCodes invCountCodes : codesList) {
//查询此条码在库存中是否存在
boolean contains = invDetailCodes.contains(invCountCodes.getCode());
if (!contains) {
invCountCodes.setStatus(1);
}
}
//批量更新条码信息
invCountCodesDao.updateBatch(codesList);
}
//更新单据信息
invCountOrderDao.updateByPrimaryKey(invCountOrder);
//更新单据详情
invCountOrderDetailDao.updateBatch(detailList);
return ResultVOUtils.success();
}
@Override
public BaseResponse updateCountOrderStatus(String id, Integer status) {
InvCountOrder invCountOrder = invCountOrderDao.selectByPrimaryKey(Integer.valueOf(id));
invCountOrder.setStatus(status);
invCountOrder.setAuditUser(customerService.getUserBean().getUserName());
invCountOrder.setAuditTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
invCountOrder.setUpdateTime(DateUtil.date().toString(DatePattern.NORM_DATETIME_PATTERN));
if (status == 0) {
//审核不通过
//查询盘点单据详情,清空盘盈/盘亏数值
invCountOrderDetailDao.resetCountFiledValue(invCountOrder.getOrderId());
//清空条码的状态
invCountCodesDao.resetCountFiledValue(invCountOrder.getOrderId());
} else {
//审核通过
//todo 根据单据详情生成相关单据
}
invCountOrderDao.updateByPrimaryKey(invCountOrder);
return ResultVOUtils.success();
}

@ -6,7 +6,7 @@
<result column="orderIdFk" jdbcType="VARCHAR" property="orderIdFk"/>
<result column="productId" jdbcType="VARCHAR" property="productId"/>
<result column="code" jdbcType="VARCHAR" property="code"/>
<result column="status" jdbcType="BOOLEAN" property="status"/>
<result column="status" jdbcType="INTEGER" property="status"/>
</resultMap>
<sql id="Base_Column_List">
@ -35,7 +35,7 @@
insert into inv_count_codes (orderIdFk, productId, code,
`status`)
values (#{orderIdFk,jdbcType=VARCHAR}, #{productId,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR},
#{status,jdbcType=BOOLEAN})
#{status,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id"
@ -66,7 +66,7 @@
#{code,jdbcType=VARCHAR},
</if>
<if test="status != null">
#{status,jdbcType=BOOLEAN},
#{status,jdbcType=INTEGER},
</if>
</trim>
</insert>
@ -84,7 +84,7 @@
code = #{code,jdbcType=VARCHAR},
</if>
<if test="status != null">
`status` = #{status,jdbcType=BOOLEAN},
`status` = #{status,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
@ -95,7 +95,7 @@
set orderIdFk = #{orderIdFk,jdbcType=VARCHAR},
productId = #{productId,jdbcType=VARCHAR},
code = #{code,jdbcType=VARCHAR},
`status` = #{status,jdbcType=BOOLEAN}
`status` = #{status,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
</update>
@ -119,7 +119,7 @@
</trim>
<trim prefix="`status` = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=BOOLEAN}
when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=INTEGER}
</foreach>
</trim>
</trim>
@ -135,7 +135,7 @@
values
<foreach collection="list" item="item" separator=",">
(#{item.orderIdFk,jdbcType=VARCHAR}, #{item.productId,jdbcType=VARCHAR}, #{item.code,jdbcType=VARCHAR},
#{item.status,jdbcType=BOOLEAN})
#{item.status,jdbcType=INTEGER})
</foreach>
</insert>
@ -163,14 +163,34 @@
</select>
<select id="countByOrderIdFk" resultType="java.lang.Long">
select count(*) from inv_count_codes where orderIdFk = #{orderIdFk}
select count(*)
from inv_count_codes
where orderIdFk = #{orderIdFk}
</select>
<select id="countByOrderId" resultType="java.lang.Long">
select count(*) from inv_count_codes where orderIdFk = #{orderIdFk}
select count(*)
from inv_count_codes
where orderIdFk = #{orderIdFk}
</select>
<select id="selectCountByCodeAndOrderId" resultType="java.lang.Long">
select count(*) from inv_count_codes where orderIdFk = #{orderIdFk} and code = #{code}
select count(*)
from inv_count_codes
where orderIdFk = #{orderIdFk}
and code = #{code}
</select>
<update id="resetCountFiledValue">
update inv_count_codes
set status = null
where orderIdFk = #{orderId}
</update>
<select id="selectByOrderIdAndProductId" resultMap="BaseResultMap">
select *
from inv_count_codes
where orderIdFk = #{orderIdFk}
and productId = #{productId}
</select>
</mapper>

@ -306,6 +306,7 @@
AND co.status = #{status}
</if>
</where>
order by updateTime desc
</select>
<select id="selectOrderIdById" resultType="java.lang.String">
@ -346,6 +347,8 @@
</update>
<select id="selectByOrderId" resultMap="BaseResultMap">
select * from inv_count_order where orderId = #{orderId}
select *
from inv_count_order
where orderId = #{orderId}
</select>
</mapper>

@ -322,6 +322,23 @@
</delete>
<select id="selectByOrderIdAndNameCode" resultMap="BaseResultMap">
select * from inv_count_order_detail where orderIdFk = #{orderIdFk} and nameCode = #{nameCode}
select *
from inv_count_order_detail
where orderIdFk = #{orderIdFk}
and nameCode = #{nameCode}
</select>
<select id="selectByOrderId" resultMap="BaseResultMap">
select *
from inv_count_order_detail
where orderIdFk = #{orderId}
</select>
<update id="resetCountFiledValue">
update inv_count_order_detail
set profitNum = null,
lossNum = null,
status = null
where orderIdFk = #{orderId}
</update>
</mapper>

@ -391,4 +391,22 @@
and invWarehouseCode = #{invWarehouseCode}
and code = #{code}
</select>
<select id="selectCodeByInvCodeAndProductId" resultType="java.lang.String">
select originCode from inv_product_detail
<where>
<if test="invStorageCode != null and invStorageCode != ''">
AND invStorageCode = #{invStorageCode}
</if>
<if test="invWarehouseCode != null and invWarehouseCode != ''">
AND invWarehouseCode = #{invWarehouseCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="productId != null and productId != ''">
AND productIdFk = #{productId}
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save