Commit b29ae7df90b630d3b774aea2cb72c4d951f01d31

Authored by yeqianyong
1 parent caa13938

楚江ERP-1、订货单变更增加模糊搜索;2、增加可以补货的订货单数据;3、发货计划状态逻辑调整;4、新增发货明细bug修复;5、生成发货单列表数据逻辑调整;

... ... @@ -267,6 +267,8 @@ public class ShipmentsOrderInfoServiceImpl extends BaseMpServiceImpl<ShipmentsOr
267 267 List<List<ShipmentsPlanDetail>> batchList = CommonUtil.partition(detailList, 8);
268 268 handleBatchData(batchList, planId);
269 269 }
  270 + // 更细发货计划状态
  271 + shipmentsPlanDetailService.completed(planId);
270 272 }
271 273
272 274
... ...
... ... @@ -23,10 +23,7 @@ import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
23 23 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanDetailService;
24 24 import com.lframework.xingyun.sc.service.shipments.ShipmentsPlanService;
25 25 import com.lframework.xingyun.sc.utils.CommonUtil;
26   -import com.lframework.xingyun.sc.vo.shipments.plan.CreateShipmentsPlanDetailVo;
27   -import com.lframework.xingyun.sc.vo.shipments.plan.QueryShipmentsPlanDetailVo;
28   -import com.lframework.xingyun.sc.vo.shipments.plan.ShipmentsPlanDetailSplitVo;
29   -import com.lframework.xingyun.sc.vo.shipments.plan.UpdateShipmentsPlanDetailVo;
  26 +import com.lframework.xingyun.sc.vo.shipments.plan.*;
30 27 import org.apache.commons.collections4.CollectionUtils;
31 28 import org.apache.commons.lang3.StringUtils;
32 29 import org.springframework.stereotype.Service;
... ... @@ -148,13 +145,14 @@ public class ShipmentsPlanDetailServiceImpl extends BaseMpServiceImpl<ShipmentsP
148 145 */
149 146 @Override
150 147 public PageResult<ShipmentsPlanDetail> queryCanShipmentsData(Integer pageIndex, Integer pageSize, QueryShipmentsPlanDetailVo vo) {
151   - // 获取已经加入发货计划的订货单规格id
152   - LambdaQueryWrapper<ShipmentsPlanDetail> queryWrapper = Wrappers.lambdaQuery(ShipmentsPlanDetail.class);
153   - queryWrapper.eq(ShipmentsPlanDetail::getPreShipments, Boolean.FALSE)
154   - .select(ShipmentsPlanDetail::getOrderSpecId);
155   - List<ShipmentsPlanDetail> shipmentsPlanDetails = getBaseMapper().selectList(queryWrapper);
156   - if (CollectionUtils.isNotEmpty(shipmentsPlanDetails)) {
157   - List<String> orderSpecIds = shipmentsPlanDetails.stream().map(ShipmentsPlanDetail::getOrderSpecId).collect(Collectors.toList());
  148 + // 获取发货计划数据
  149 + ShipmentsPlan plan = shipmentsPlanService.findById(vo.getPlanId());
  150 + if (plan == null) {
  151 + throw new DefaultClientException("发货计划不存在!");
  152 + }
  153 + // 获取已经存在的明细数据
  154 + List<String> orderSpecIds = getBaseMapper().getExistsOrderSpecIds(plan.getAfTomoPreShipDate());
  155 + if (CollectionUtils.isNotEmpty(orderSpecIds)) {
158 156 vo.setOrderSpecIds(orderSpecIds);
159 157 }
160 158 // 开启分页
... ... @@ -324,6 +322,26 @@ public class ShipmentsPlanDetailServiceImpl extends BaseMpServiceImpl<ShipmentsP
324 322 return getBaseMapper().listByPlanId(planId);
325 323 }
326 324
  325 + @Override
  326 + public void completed(String planId) {
  327 + if (StringUtils.isBlank(planId)) {
  328 + return;
  329 + }
  330 + LambdaQueryWrapper<ShipmentsPlanDetail> queryWrapper = Wrappers.lambdaQuery(ShipmentsPlanDetail.class);
  331 + queryWrapper.eq(ShipmentsPlanDetail::getPlanId, planId)
  332 + .and(wrapper -> wrapper.isNull(ShipmentsPlanDetail::getShipmentOrderId)
  333 + .or()
  334 + .eq(ShipmentsPlanDetail::getShipmentOrderId, ""));
  335 + Integer count = getBaseMapper().selectCount(queryWrapper);
  336 + if (count == 0) {
  337 + // 已全部完成
  338 + UpdateShipmentsPlanVo planVo = new UpdateShipmentsPlanVo();
  339 + planVo.setId(planId);
  340 + planVo.setStatus("COMPLETED");
  341 + shipmentsPlanService.update(planVo);
  342 + }
  343 + }
  344 +
327 345
328 346 /**
329 347 * 封装发货计划明细数据
... ...
... ... @@ -63,4 +63,13 @@ public interface ShipmentsPlanDetailMapper extends BaseMapper<ShipmentsPlanDetai
63 63 * @return ShipmentsPlanDetail
64 64 */
65 65 ShipmentsPlanDetail findById(@Param("id") String id);
  66 +
  67 + /**
  68 + * 获取已经存在的规格ID
  69 + * 包含预发数据
  70 + *
  71 + * @param shipmentsDate 发货日期
  72 + * @return List<String>
  73 + */
  74 + List<String> getExistsOrderSpecIds(LocalDate shipmentsDate);
66 75 }
... ...
... ... @@ -105,4 +105,12 @@ public interface ShipmentsPlanDetailService extends BaseMpService<ShipmentsPlanD
105 105 * @return List<ShipmentsPlanDetail>
106 106 */
107 107 List<ShipmentsPlanDetail> listByPlanId(String planId);
  108 +
  109 +
  110 + /**
  111 + * 判断发货计划明细是否已全部完成
  112 + *
  113 + * @param planId 计划ID
  114 + */
  115 + void completed(String planId);
108 116 }
... ...
... ... @@ -15,6 +15,7 @@ public class QueryPurchaseOrderInfoVo extends PageVo implements BaseVo, Serializ
15 15 * 查询类型
16 16 * REVOKE:撤销
17 17 * CHANGE:变更
  18 + * REPLENISHMENT:补货
18 19 */
19 20 @ApiModelProperty("查询类型")
20 21 private String queryType;
... ... @@ -99,4 +100,11 @@ public class QueryPurchaseOrderInfoVo extends PageVo implements BaseVo, Serializ
99 100 @ApiModelProperty("订货单位或订单编号")
100 101 private String orderingUnitNameOrOrderNo;
101 102
  103 + /**
  104 + * 搜索关键字
  105 + * 移动端使用
  106 + * 根据订货单位和订货单编号模糊搜索
  107 + */
  108 + @ApiModelProperty("搜索关键字")
  109 + private String searchKey;
102 110 }
... ...
... ... @@ -45,4 +45,10 @@ public class QueryShipmentsPlanDetailVo extends PageVo implements BaseVo, Serial
45 45 */
46 46 @ApiModelProperty("客户名称")
47 47 private String customerName;
  48 +
  49 + /**
  50 + * 是否已完成
  51 + */
  52 + @ApiModelProperty("客户名称")
  53 + private Boolean completed;
48 54 }
... ...
... ... @@ -117,6 +117,12 @@
117 117 <if test="vo.workshopId != null and vo.workshopId != ''">
118 118 AND tb.workshop_id = #{vo.workshopId}
119 119 </if>
  120 + <if test="vo.searchKey != null and vo.searchKey != ''">
  121 + AND (
  122 + cu.name LIKE CONCAT('%', #{vo.searchKey},'%')
  123 + OR tb.order_no LIKE CONCAT('%', #{vo.searchKey},'%')
  124 + )
  125 + </if>
120 126 </where>
121 127 ORDER BY tb.update_time DESC
122 128 </select>
... ...
... ... @@ -192,10 +192,14 @@
192 192 </when>
193 193 <when test="vo.queryType == 'CHANGE'">
194 194 AND tb.examine_status = 'PASS'
195   - AND tb.status != 'SHIPPED'
  195 + AND tb.status NOT IN ('SHIPPED', 'DELIVERED')
196 196 AND (tb.revoke_status != 'UNDOING' OR tb.revoke_status IS NULL)
197 197 AND (tb.spec_change_status != 'IN_PROGRESS' OR tb.spec_change_status IS NULL)
198 198 </when>
  199 + <when test="vo.queryType == 'REPLENISHMENT'">
  200 + AND tb.examine_status = 'PASS'
  201 + AND tb.status IN ('TRANSIT', 'SHIPPED', 'DELIVERED')
  202 + </when>
199 203 <otherwise>
200 204 AND 1 = 0 <!-- 确保查询不到任何数据 -->
201 205 </otherwise>
... ...
... ... @@ -86,6 +86,16 @@
86 86 <if test="vo.shipmentsDate != null">
87 87 AND tb.shipments_date = #{vo.shipmentsDate}
88 88 </if>
  89 + <if test="vo.completed != null">
  90 + <choose>
  91 + <when test="vo.completed == true">
  92 + AND tb.shipment_order_id IS NOT NULL AND tb.shipment_order_id != ''
  93 + </when>
  94 + <otherwise>
  95 + AND (tb.shipment_order_id IS NULL OR tb.shipment_order_id = '')
  96 + </otherwise>
  97 + </choose>
  98 + </if>
89 99 </where>
90 100 ORDER BY tb.create_time desc
91 101 </select>
... ... @@ -238,4 +248,10 @@
238 248 </if>
239 249 </where>
240 250 </select>
  251 +
  252 + <select id="getExistsOrderSpecIds" resultType="java.lang.String">
  253 + select distinct tb.order_spec_id
  254 + from shipments_plan_detail tb
  255 + where tb.pre_shipments = false or (tb.pre_shipments = true and tb.shipments_date = #{shipmentsDate})
  256 + </select>
241 257 </mapper>
... ...