Commit b3ece8e4506b8905fd59857f6d024de2ce6edb53

Authored by 谭毅彬
1 parent 26cc68a6

出库单合并问题修复

Signed-off-by: TanYibin <5491541@qq.com>
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
@@ -125,21 +125,11 @@ @@ -125,21 +125,11 @@
125 <a-button type="primary" icon="import">导入</a-button> 125 <a-button type="primary" icon="import">导入</a-button>
126 </a-upload> 126 </a-upload>
127 <a-button v-has="'shipmentHeader:print'" @click="batchPrint()" type="primary">打印</a-button> 127 <a-button v-has="'shipmentHeader:print'" @click="batchPrint()" type="primary">打印</a-button>
128 -<!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->  
129 -<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"-->  
130 -<!-- @handleSuperQuery="handleSuperQuery"></j-super-query>-->  
131 <j-super-query :fieldList="superFieldList" v-has="'shipmentHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/> 128 <j-super-query :fieldList="superFieldList" v-has="'shipmentHeader:superQuery'" @handleSuperQuery="handleSuperQuery"/>
132 -  
133 </div> 129 </div>
134 130
135 <!-- table区域-begin --> 131 <!-- table区域-begin -->
136 <div> 132 <div>
137 -<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">-->  
138 -<!-- <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a-->  
139 -<!-- style="font-weight: 600">{{ selectedRowKeys.length }}</a> 项-->  
140 -<!-- <a style="margin-left: 24px" @click="onClearSelected">清空</a>-->  
141 -<!-- </div>-->  
142 -  
143 <a-table 133 <a-table
144 ref="table" 134 ref="table"
145 size="middle" 135 size="middle"
@@ -219,19 +209,24 @@ @@ -219,19 +209,24 @@
219 </a-popconfirm> 209 </a-popconfirm>
220 <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800)) 210 <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800))
221 || (flowOff == '0' && record.lastStatus <= 200)" @click="autoShipmentCombine(record)" v-has="'shipmentHeader:autoShipmentCombine'"><a-button type="primary">自动配盘</a-button><a-divider type="vertical"/></a> 211 || (flowOff == '0' && record.lastStatus <= 200)" @click="autoShipmentCombine(record)" v-has="'shipmentHeader:autoShipmentCombine'"><a-button type="primary">自动配盘</a-button><a-divider type="vertical"/></a>
222 - <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800))  
223 - || (flowOff == '0' && record.lastStatus <= 200)" @click="autoShipment(record)" v-has="'shipmentHeader:autoShipment'"><a-button type="primary">自动出库</a-button><a-divider type="vertical"/></a>  
224 - <a v-if="((record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800))  
225 - || (flowOff == '0' && record.lastStatus <= 200)" @click="autoShipmentAdvice(record)" v-has="'shipmentHeader:autoShipment'"><a-button type="primary">预配盘出库</a-button></a>  
226 - <a-dropdown v-if="(record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1') || (record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null)">  
227 - <a class="ant-dropdown-link"><a-divider type="vertical"/>更多 <a-icon type="down"/></a> 212 + <a-dropdown v-if="(record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1')
  213 + || (record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null)
  214 + || (record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800)
  215 + || (flowOff == '0' && record.lastStatus <= 200)">
  216 + <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
228 <a-menu slot="overlay"> 217 <a-menu slot="overlay">
229 - <a-menu-item v-if="record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1'">  
230 - <a @click="openProcess(record)" type="primary">审核进度</a>  
231 - </a-menu-item>  
232 - <a-menu-item v-has="'shipmentHeader:edit'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> 218 + <a-menu-item v-if="record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1'">
  219 + <a @click="openProcess(record)" type="primary">审核进度</a>
  220 + </a-menu-item>
  221 + <a-menu-item v-if="(record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800) || (flowOff == '0' && record.lastStatus <= 200)" v-has="'shipmentHeader:autoShipment'">
  222 + <a @click="autoShipment(record)" type="primary">自动出库</a>
  223 + </a-menu-item>
  224 + <a-menu-item v-if="(record.firstStatus >= 15 && record.firstStatus != '20' && record.lastStatus < 800) || (flowOff == '0' && record.lastStatus <= 200)" v-has="'shipmentHeader:autoShipment'">
  225 + <a @click="autoShipmentAdvice(record)" type="primary">预配盘出库</a>
  226 + </a-menu-item>
  227 + <a-menu-item v-has="'shipmentHeader:edit'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null">
233 <a @click="handleEdit(record)">编辑</a> 228 <a @click="handleEdit(record)">编辑</a>
234 - </a-menu-item> 229 + </a-menu-item>
235 <a-menu-item v-has="'shipmentHeader:delete'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> 230 <a-menu-item v-has="'shipmentHeader:delete'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null">
236 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> 231 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
237 <a>删除</a> 232 <a>删除</a>
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -48,7 +48,9 @@ import org.springframework.web.servlet.ModelAndView; @@ -48,7 +48,9 @@ import org.springframework.web.servlet.ModelAndView;
48 48
49 import com.alibaba.fastjson.JSON; 49 import com.alibaba.fastjson.JSON;
50 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 50 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  51 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
51 import com.baomidou.mybatisplus.core.metadata.IPage; 52 import com.baomidou.mybatisplus.core.metadata.IPage;
  53 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
52 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 54 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
53 55
54 import cn.monitor4all.logRecord.annotation.OperationLog; 56 import cn.monitor4all.logRecord.annotation.OperationLog;
@@ -155,7 +157,9 @@ public class ShipmentHeaderController extends JeecgController&lt;ShipmentHeader, IS @@ -155,7 +157,9 @@ public class ShipmentHeaderController extends JeecgController&lt;ShipmentHeader, IS
155 @ApiOperation(value = "出库单-通过id删除", notes = "出库单-通过id删除") 157 @ApiOperation(value = "出库单-通过id删除", notes = "出库单-通过id删除")
156 @DeleteMapping(value = "/delete") 158 @DeleteMapping(value = "/delete")
157 public Result<String> delete(@RequestParam(name = "id", required = true) String id) { 159 public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
158 - shipmentHeaderService.delMain(id, "删除出库单"); 160 + if (!shipmentHeaderService.delMain(id, "删除出库单")) {
  161 + return Result.error("删除失败!");
  162 + }
159 return Result.OK("删除成功!"); 163 return Result.OK("删除成功!");
160 } 164 }
161 165
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
@@ -124,12 +124,28 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper, @@ -124,12 +124,28 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
124 private IShipmentContainerAdviceService shipmentContainerAdviceService; 124 private IShipmentContainerAdviceService shipmentContainerAdviceService;
125 125
126 @Override 126 @Override
127 - @Transactional 127 + @Transactional(rollbackFor = Exception.class)
128 public boolean delMain(String id, String reason) { 128 public boolean delMain(String id, String reason) {
129 ShipmentHeader shipmentHeader = getById(id); 129 ShipmentHeader shipmentHeader = getById(id);
  130 + if (shipmentHeader == null) {
  131 + throw new JeecgBootException("获取出库单信息失败!");
  132 + }
130 if (shipmentHeader.getFirstStatus().intValue() > QuantityConstant.RECEIPT_HEADER_BUILD) { 133 if (shipmentHeader.getFirstStatus().intValue() > QuantityConstant.RECEIPT_HEADER_BUILD) {
131 throw new JeecgBootException("不能删除非新建状态单据"); 134 throw new JeecgBootException("不能删除非新建状态单据");
132 } 135 }
  136 + LambdaUpdateWrapper<ShipmentHeader> shipmentHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();
  137 + shipmentHeaderLambdaUpdateWrapper.eq(ShipmentHeader::getMergeShipmentCode, shipmentHeader.getCode());
  138 + shipmentHeaderLambdaUpdateWrapper.set(ShipmentHeader::getFirstStatus, QuantityConstant.SHIPMENT_HEADER_BUILD).set(ShipmentHeader::getLastStatus,
  139 + QuantityConstant.SHIPMENT_HEADER_BUILD);
  140 + if (!shipmentHeaderService.update(shipmentHeaderLambdaUpdateWrapper)) {
  141 + throw new JeecgBootException("更新出库单主表失败");
  142 + }
  143 + LambdaUpdateWrapper<ShipmentDetail> shipmentDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
  144 + shipmentDetailLambdaUpdateWrapper.eq(ShipmentDetail::getMergeShipmentCode, shipmentHeader.getCode());
  145 + shipmentDetailLambdaUpdateWrapper.set(ShipmentDetail::getStatus, QuantityConstant.SHIPMENT_HEADER_BUILD);
  146 + if (!shipmentDetailService.update(shipmentDetailLambdaUpdateWrapper)) {
  147 + throw new JeecgBootException("更新出库单主表失败");
  148 + }
133 shipmentHeaderHistoryService.saveById(id, reason); 149 shipmentHeaderHistoryService.saveById(id, reason);
134 shipmentDetailMapper.deleteByMainId(id.toString()); 150 shipmentDetailMapper.deleteByMainId(id.toString());
135 shipmentHeaderMapper.deleteById(id); 151 shipmentHeaderMapper.deleteById(id);
@@ -319,6 +335,9 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper, @@ -319,6 +335,9 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl&lt;ShipmentHeaderMapper,
319 if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getCustomerCode).distinct().count() > 1) { 335 if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getCustomerCode).distinct().count() > 1) {
320 return Result.error("客户信息不一致!"); 336 return Result.error("客户信息不一致!");
321 } 337 }
  338 + if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getZoneCode).distinct().count() > 1) {
  339 + return Result.error("库区信息不一致!");
  340 + }
322 // 查询出库单详情 341 // 查询出库单详情
323 LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); 342 LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
324 shipmentDetailLambdaQueryWrapper.in(ShipmentDetail::getShipmentCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList())); 343 shipmentDetailLambdaQueryWrapper.in(ShipmentDetail::getShipmentCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList()));