Commit b3ece8e4506b8905fd59857f6d024de2ce6edb53
1 parent
26cc68a6
出库单合并问题修复
Signed-off-by: TanYibin <5491541@qq.com>
Showing
3 changed files
with
41 additions
and
23 deletions
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 | -<!-- <!– 高级查询区域 –>--> | ||
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<ShipmentHeader, IS | @@ -155,7 +157,9 @@ public class ShipmentHeaderController extends JeecgController<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<ShipmentHeaderMapper, | @@ -124,12 +124,28 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<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<ShipmentHeaderMapper, | @@ -319,6 +335,9 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<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())); |