Commit c228e9dd4a0cbec37dd825e622b89a4a0e7019f4

Authored by yeqianyong
1 parent fa6e1041

楚江ERP-订货单规格变更记录相关接口开发(基本的增删改查)

... ... @@ -77,6 +77,11 @@ public class OrderSpecificationChangeRecord extends BaseEntity implements BaseDt
77 77 private String status;
78 78
79 79 /**
  80 + * 变更原因及变更后的质量要求
  81 + */
  82 + private String description;
  83 +
  84 + /**
80 85 * 创建人ID
81 86 */
82 87 @TableField(fill = FieldFill.INSERT)
... ...
... ... @@ -3,22 +3,20 @@ package com.lframework.xingyun.sc.impl.order;
3 3 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
4 4 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5 5 import com.github.pagehelper.PageInfo;
  6 +import com.lframework.starter.web.core.components.security.SecurityUtil;
  7 +import com.lframework.starter.web.core.utils.*;
  8 +import com.lframework.starter.web.inner.entity.SysUser;
  9 +import com.lframework.starter.web.inner.service.system.SysUserService;
6 10 import com.lframework.xingyun.sc.entity.OrderSpecificationChangeRecord;
7 11 import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
8   -import com.lframework.starter.web.core.utils.PageResultUtil;
9 12 import com.lframework.starter.web.core.components.resp.PageResult;
10   -import com.lframework.starter.web.core.utils.OpLogUtil;
11 13 import com.lframework.starter.common.exceptions.impl.DefaultClientException;
12   -import com.lframework.starter.web.core.utils.IdUtil;
13 14 import com.lframework.starter.common.utils.ObjectUtil;
14 15 import com.lframework.starter.web.core.annotations.oplog.OpLog;
15   -import com.lframework.starter.web.core.utils.PageHelperUtil;
16 16 import com.lframework.starter.common.utils.Assert;
17 17 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
18 18 import com.lframework.xingyun.sc.entity.PurchaseOrderLine;
19 19 import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
20   -import com.lframework.xingyun.sc.vo.order.CreatePurchaseOrderLineVo;
21   -import com.lframework.xingyun.sc.vo.order.UpdatePurchaseOrderLineVo;
22 20 import com.lframework.xingyun.sc.vo.order.change.*;
23 21 import org.apache.commons.collections4.CollectionUtils;
24 22 import org.springframework.transaction.annotation.Transactional;
... ... @@ -27,6 +25,7 @@ import com.lframework.xingyun.sc.service.order.OrderSpecificationChangeRecordSer
27 25 import org.springframework.stereotype.Service;
28 26
29 27 import javax.annotation.Resource;
  28 +import java.math.BigDecimal;
30 29 import java.util.*;
31 30
32 31 @Service
... ... @@ -35,6 +34,8 @@ public class OrderSpecificationChangeRecordServiceImpl extends BaseMpServiceImpl
35 34
36 35 @Resource
37 36 private PurchaseOrderLineService purchaseOrderLineService;
  37 + @Resource
  38 + private SysUserService sysUserService;
38 39
39 40
40 41 @Override
... ... @@ -69,7 +70,7 @@ public class OrderSpecificationChangeRecordServiceImpl extends BaseMpServiceImpl
69 70 }
70 71 // 变更前
71 72 Map<String, List<PurchaseOrderLine>> beforeChangeMap = new HashMap<>(orderIds.size());
72   - List<PurchaseOrderLine> beforeChangeList = purchaseOrderLineService.listByIds(orderIds);
  73 + List<PurchaseOrderLine> beforeChangeList = purchaseOrderLineService.listByOrderIds(orderIds);
73 74 for (PurchaseOrderLine purchaseOrderLine : beforeChangeList) {
74 75 String purchaseOrderId = purchaseOrderLine.getPurchaseOrderId();
75 76 List<PurchaseOrderLine> list = beforeChangeMap.computeIfAbsent(purchaseOrderId, k -> new ArrayList<>());
... ... @@ -95,9 +96,20 @@ public class OrderSpecificationChangeRecordServiceImpl extends BaseMpServiceImpl
95 96
96 97 @Override
97 98 public OrderSpecificationChangeRecord findById(String id) {
  99 + OrderSpecificationChangeRecord changeRecord = getBaseMapper().selectById(id);
  100 + if (changeRecord == null) {
  101 + throw new DefaultClientException("订货单规格变更记录不存在!");
  102 + };
  103 + String orderId = changeRecord.getOrderId();
  104 + // 获取规格数据
  105 + // 变更前
  106 + List<PurchaseOrderLine> beforeChangeList = purchaseOrderLineService.listByOrderIds(Collections.singletonList(orderId));
  107 + changeRecord.setBeforeChangeSpecList(beforeChangeList);
  108 + // 变更后
  109 + List<PurchaseOrderLine> afterChangeList = purchaseOrderLineService.listByChangeIds(Collections.singletonList(id));
  110 + changeRecord.setAfterChangeSpecList(afterChangeList);
98 111
99   -
100   - return getBaseMapper().selectById(id);
  112 + return changeRecord;
101 113 }
102 114
103 115 @OpLog(type = OtherOpLogType.class, name = "新增订货单规格变更记录,ID:{}", params = {"#id"})
... ... @@ -110,10 +122,37 @@ public class OrderSpecificationChangeRecordServiceImpl extends BaseMpServiceImpl
110 122 data.setOrderId(vo.getOrderId());
111 123 data.setOrderQuantity(vo.getOrderQuantity());
112 124 data.setDeliveryDate(vo.getDeliveryDate());
  125 + // 审核中
  126 + data.setStatus("AUDIT");
113 127
114   - getBaseMapper().insert(data);
  128 + // 获取当前人员信息
  129 + String userId = SecurityUtil.getCurrentUser().getId();
  130 + SysUser user = sysUserService.findById(userId);
115 131 // 处理规格数据
  132 + BigDecimal totalQuantity = new BigDecimal(0);
  133 + List<PurchaseOrderLine> orderLineList = new ArrayList<>();
116 134 List<CreateOrderSpecificationInfoVo> orderSpecList = vo.getOrderSpecList();
  135 + for (int i = 0; i < orderSpecList.size(); i++) {
  136 + CreateOrderSpecificationInfoVo createSpecVo = orderSpecList.get(i);
  137 + PurchaseOrderLine orderLine = JsonUtil.parseObject(JsonUtil.toJsonString(createSpecVo), PurchaseOrderLine.class);
  138 + orderLine.setId(IdUtil.getId());
  139 + orderLine.setChangeId(id);
  140 + orderLine.setCreateById(userId);
  141 + orderLine.setCreateBy(user.getName());
  142 + orderLine.setUpdateById(userId);
  143 + orderLine.setUpdateBy(user.getName());
  144 + if (orderLine.getShowOrder() == null) {
  145 + orderLine.setShowOrder(i + 1);
  146 + }
  147 + totalQuantity = totalQuantity.add(orderLine.getQuantity());
  148 +
  149 + orderLineList.add(orderLine);
  150 + }
  151 + if (data.getOrderQuantity() == null) {
  152 + data.setOrderQuantity(totalQuantity.doubleValue());
  153 + }
  154 + getBaseMapper().insert(data);
  155 + purchaseOrderLineService.batchAdd(orderLineList);
117 156
118 157 OpLogUtil.setVariable("id", data.getId());
119 158 OpLogUtil.setExtra(vo);
... ... @@ -133,10 +172,30 @@ public class OrderSpecificationChangeRecordServiceImpl extends BaseMpServiceImpl
133 172 .set(OrderSpecificationChangeRecord::getOrderId, vo.getOrderId())
134 173 .set(OrderSpecificationChangeRecord::getOrderQuantity, vo.getOrderQuantity())
135 174 .set(OrderSpecificationChangeRecord::getDeliveryDate, vo.getDeliveryDate())
  175 + .set(OrderSpecificationChangeRecord::getStatus, "AUDIT")
136 176 .eq(OrderSpecificationChangeRecord::getId, vo.getId());
137   - getBaseMapper().update(updateWrapper);
  177 + // 获取当前人员信息
  178 + String userId = SecurityUtil.getCurrentUser().getId();
  179 + SysUser user = sysUserService.findById(userId);
138 180 // 更新规格数据
  181 + BigDecimal totalQuantity = new BigDecimal(0);
  182 + List<PurchaseOrderLine> orderLineList = new ArrayList<>();
139 183 List<UpdateOrderSpecificationInfoVo> orderSpecList = vo.getOrderSpecList();
  184 + for (UpdateOrderSpecificationInfoVo updateSpecVo : orderSpecList) {
  185 + PurchaseOrderLine orderLine = JsonUtil.parseObject(JsonUtil.toJsonString(updateSpecVo), PurchaseOrderLine.class);
  186 + orderLine.setUpdateById(userId);
  187 + orderLine.setUpdateBy(user.getName());
  188 + totalQuantity = totalQuantity.add(orderLine.getQuantity());
  189 +
  190 + orderLineList.add(orderLine);
  191 + }
  192 + if (vo.getOrderQuantity() == null) {
  193 + updateWrapper.set(OrderSpecificationChangeRecord::getOrderQuantity, totalQuantity.doubleValue());
  194 + } else {
  195 + updateWrapper.set(OrderSpecificationChangeRecord::getOrderQuantity, vo.getOrderQuantity());
  196 + }
  197 + getBaseMapper().update(updateWrapper);
  198 + purchaseOrderLineService.batchUpdate(orderLineList);
140 199
141 200 OpLogUtil.setVariable("id", data.getId());
142 201 OpLogUtil.setExtra(vo);
... ...
... ... @@ -24,7 +24,7 @@ import com.lframework.xingyun.sc.service.order.PurchaseOrderLineService;
24 24 import com.lframework.xingyun.sc.vo.order.CreatePurchaseOrderLineVo;
25 25 import com.lframework.xingyun.sc.vo.order.QueryPurchaseOrderLineVo;
26 26 import com.lframework.xingyun.sc.vo.order.UpdatePurchaseOrderLineVo;
27   -import org.apache.commons.lang3.StringUtils;
  27 +import org.apache.commons.collections4.CollectionUtils;
28 28 import org.springframework.transaction.annotation.Transactional;
29 29 import org.springframework.stereotype.Service;
30 30
... ... @@ -188,17 +188,43 @@ public class PurchaseOrderLineServiceImpl extends BaseMpServiceImpl<PurchaseOrde
188 188 }
189 189
190 190 @Override
191   - public List<PurchaseOrderLine> listByOrderId(String orderId) {
192   - if (StringUtils.isBlank(orderId)) {
  191 + public List<PurchaseOrderLine> listByOrderIds(List<String> orderIds) {
  192 + if (CollectionUtils.isEmpty(orderIds)) {
193 193 return Collections.emptyList();
194 194 }
195 195 LambdaQueryWrapper<PurchaseOrderLine> queryWrapper = Wrappers.lambdaQuery(PurchaseOrderLine.class);
196   - queryWrapper.eq(PurchaseOrderLine::getChangeId, orderId)
  196 + queryWrapper.in(PurchaseOrderLine::getPurchaseOrderId, orderIds)
197 197 .orderByAsc(PurchaseOrderLine::getShowOrder);
198 198
199 199 return getBaseMapper().selectList(queryWrapper);
200 200 }
201 201
  202 + /**
  203 + * 批量新增
  204 + *
  205 + * @param specList 数据集合
  206 + */
  207 + @Override
  208 + public void batchAdd(List<PurchaseOrderLine> specList) {
  209 + if (CollectionUtils.isEmpty(specList)) {
  210 + return;
  211 + }
  212 + getBaseMapper().batchAdd(specList);
  213 + }
  214 +
  215 + /**
  216 + * 批量更新
  217 + *
  218 + * @param specList 数据集合
  219 + */
  220 + @Override
  221 + public void batchUpdate(List<PurchaseOrderLine> specList) {
  222 + if (CollectionUtils.isEmpty(specList)) {
  223 + return;
  224 + }
  225 + getBaseMapper().batchUpdate(specList);
  226 + }
  227 +
202 228 @Override
203 229 public void cleanCacheByKey(Serializable key) {
204 230
... ...
... ... @@ -21,4 +21,18 @@ public interface PurchaseOrderLineMapper extends BaseMapper<PurchaseOrderLine> {
21 21 * @return
22 22 */
23 23 List<PurchaseOrderLine> query(@Param("vo") QueryPurchaseOrderLineVo vo);
  24 +
  25 + /**
  26 + * 批量新增
  27 + *
  28 + * @param specList 数据集合
  29 + */
  30 + int batchAdd(@Param("specList") List<PurchaseOrderLine> specList);
  31 +
  32 + /**
  33 + * 批量新增
  34 + *
  35 + * @param specList 数据集合
  36 + */
  37 + int batchUpdate(@Param("specList") List<PurchaseOrderLine> specList);
24 38 }
... ...
... ... @@ -65,8 +65,22 @@ public interface PurchaseOrderLineService extends BaseMpService<PurchaseOrderLin
65 65 /**
66 66 * 根据订货单ID查询
67 67 *
68   - * @param orderId 订货单ID
  68 + * @param orderIds 订货单ID集合
69 69 * @return List<PurchaseOrderLine>
70 70 */
71   - List<PurchaseOrderLine> listByOrderId(String orderId);
  71 + List<PurchaseOrderLine> listByOrderIds(List<String> orderIds);
  72 +
  73 + /**
  74 + * 批量新增
  75 + *
  76 + * @param specList 数据集合
  77 + */
  78 + void batchAdd(List<PurchaseOrderLine> specList);
  79 +
  80 + /**
  81 + * 批量更新
  82 + *
  83 + * @param specList 数据集合
  84 + */
  85 + void batchUpdate(List<PurchaseOrderLine> specList);
72 86 }
... ...
... ... @@ -9,7 +9,6 @@ import com.lframework.starter.web.core.vo.BaseVo;
9 9 import javax.validation.constraints.NotEmpty;
10 10 import javax.validation.constraints.NotNull;
11 11
12   -import com.lframework.xingyun.sc.vo.order.CreatePurchaseOrderLineVo;
13 12 import io.swagger.annotations.ApiModelProperty;
14 13 import com.lframework.starter.web.core.components.validation.TypeMismatch;
15 14 import org.hibernate.validator.constraints.Length;
... ... @@ -48,6 +47,12 @@ public class CreateOrderSpecificationChangeRecordVo implements BaseVo, Serializa
48 47 private LocalDate deliveryDate;
49 48
50 49 /**
  50 + * 变更原因及变更后的质量要求
  51 + */
  52 + @ApiModelProperty(value = "变更原因及变更后的质量要求")
  53 + private String description;
  54 +
  55 + /**
51 56 * 规格变更记录
52 57 */
53 58 @Valid
... ...
... ... @@ -53,6 +53,12 @@ public class UpdateOrderSpecificationChangeRecordVo implements BaseVo, Serializa
53 53 private LocalDate deliveryDate;
54 54
55 55 /**
  56 + * 变更原因及变更后的质量要求
  57 + */
  58 + @ApiModelProperty(value = "变更原因及变更后的质量要求")
  59 + private String description;
  60 +
  61 + /**
56 62 * 规格变更记录
57 63 */
58 64 @Valid
... ...
... ... @@ -80,4 +80,115 @@
80 80 </where>
81 81 ORDER BY tb.show_order ASC
82 82 </select>
  83 +
  84 + <insert id="batchAdd" parameterType="java.util.List">
  85 + INSERT INTO tbl_purchase_order_line (
  86 + id, purchase_order_id, change_id, industry, quality, brand,
  87 + thickness, thickness_tol_pos, thickness_tol_neg,
  88 + width, width_tol_pos, width_tol_neg,
  89 + length, length_tol_pos, length_tol_neg,
  90 + status, quantity, sales_price, delivery_date, show_order,
  91 + assessment_exceeds_agreement, create_by_id, create_by, update_by_id, update_by
  92 + ) VALUES
  93 + <foreach collection="specList" item="item" separator=",">
  94 + (
  95 + #{item.id}, #{item.purchaseOrderId}, #{item.changeId}, #{item.industry}, #{item.quality}, #{item.brand},
  96 + #{item.thickness}, #{item.thicknessTolPos}, #{item.thicknessTolNeg},
  97 + #{item.width}, #{item.widthTolPos}, #{item.widthTolNeg},
  98 + #{item.length}, #{item.lengthTolPos}, #{item.lengthTolNeg},
  99 + #{item.status}, #{item.quantity}, #{item.salesPrice}, #{item.deliveryDate}, #{item.showOrder},
  100 + #{item.assessmentExceedsAgreement}, #{item.createById}, #{item.createBy}, #{item.updateById}, #{item.updateBy}
  101 + )
  102 + </foreach>
  103 + </insert>
  104 +
  105 + <update id="batchUpdate" parameterType="java.util.List">
  106 + UPDATE tbl_purchase_order_line
  107 + SET
  108 + industry =
  109 + <foreach collection="specList" item="item" open="CASE id" close="END">
  110 + WHEN #{item.id} THEN #{item.industry}
  111 + </foreach>,
  112 + quality =
  113 + <foreach collection="specList" item="item" open="CASE id" close="END">
  114 + WHEN #{item.id} THEN #{item.quality}
  115 + </foreach>,
  116 + brand =
  117 + <foreach collection="specList" item="item" open="CASE id" close="END">
  118 + WHEN #{item.id} THEN #{item.brand}
  119 + </foreach>,
  120 + thickness =
  121 + <foreach collection="specList" item="item" open="CASE id" close="END">
  122 + WHEN #{item.id} THEN #{item.thickness}
  123 + </foreach>,
  124 + thickness_tol_pos =
  125 + <foreach collection="specList" item="item" open="CASE id" close="END">
  126 + WHEN #{item.id} THEN #{item.thicknessTolPos}
  127 + </foreach>,
  128 + thickness_tol_neg =
  129 + <foreach collection="specList" item="item" open="CASE id" close="END">
  130 + WHEN #{item.id} THEN #{item.thicknessTolNeg}
  131 + </foreach>,
  132 + width =
  133 + <foreach collection="specList" item="item" open="CASE id" close="END">
  134 + WHEN #{item.id} THEN #{item.width}
  135 + </foreach>,
  136 + width_tol_pos =
  137 + <foreach collection="specList" item="item" open="CASE id" close="END">
  138 + WHEN #{item.id} THEN #{item.widthTolPos}
  139 + </foreach>,
  140 + width_tol_neg =
  141 + <foreach collection="specList" item="item" open="CASE id" close="END">
  142 + WHEN #{item.id} THEN #{item.widthTolNeg}
  143 + </foreach>,
  144 + length =
  145 + <foreach collection="specList" item="item" open="CASE id" close="END">
  146 + WHEN #{item.id} THEN #{item.length}
  147 + </foreach>,
  148 + length_tol_pos =
  149 + <foreach collection="specList" item="item" open="CASE id" close="END">
  150 + WHEN #{item.id} THEN #{item.lengthTolPos}
  151 + </foreach>,
  152 + length_tol_neg =
  153 + <foreach collection="specList" item="item" open="CASE id" close="END">
  154 + WHEN #{item.id} THEN #{item.lengthTolNeg}
  155 + </foreach>,
  156 + status =
  157 + <foreach collection="specList" item="item" open="CASE id" close="END">
  158 + WHEN #{item.id} THEN #{item.status}
  159 + </foreach>,
  160 + quantity =
  161 + <foreach collection="specList" item="item" open="CASE id" close="END">
  162 + WHEN #{item.id} THEN #{item.quantity}
  163 + </foreach>,
  164 + sales_price =
  165 + <foreach collection="specList" item="item" open="CASE id" close="END">
  166 + WHEN #{item.id} THEN #{item.salesPrice}
  167 + </foreach>,
  168 + delivery_date =
  169 + <foreach collection="specList" item="item" open="CASE id" close="END">
  170 + WHEN #{item.id} THEN #{item.deliveryDate}
  171 + </foreach>,
  172 + show_order =
  173 + <foreach collection="specList" item="item" open="CASE id" close="END">
  174 + WHEN #{item.id} THEN #{item.showOrder}
  175 + </foreach>,
  176 + assessment_exceeds_agreement =
  177 + <foreach collection="specList" item="item" open="CASE id" close="END">
  178 + WHEN #{item.id} THEN #{item.assessmentExceedsAgreement}
  179 + </foreach>,
  180 + update_by_id =
  181 + <foreach collection="specList" item="item" open="CASE id" close="END">
  182 + WHEN #{item.id} THEN #{item.updateById}
  183 + </foreach>,
  184 + update_by =
  185 + <foreach collection="specList" item="item" open="CASE id" close="END">
  186 + WHEN #{item.id} THEN #{item.updateBy}
  187 + </foreach>,
  188 + update_time = NOW()
  189 + WHERE id IN
  190 + <foreach collection="specList" item="item" open="(" separator="," close=")">
  191 + #{item.id}
  192 + </foreach>
  193 + </update>
83 194 </mapper>
... ...