Commit 693b4cd0aa709c135350f29af7f84d0d8ed7434e

Authored by 易文鹏
1 parent 931c454f

feat:1、库存交易记录新增库区;2、母件编码和母件名称去重复;3、出库单新增颜色信息字段。

Showing 17 changed files with 524 additions and 392 deletions
src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java
@@ -31,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional; @@ -31,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional;
31 import javax.annotation.Resource; 31 import javax.annotation.Resource;
32 import java.math.BigDecimal; 32 import java.math.BigDecimal;
33 import java.util.ArrayList; 33 import java.util.ArrayList;
  34 +import java.util.HashSet;
34 import java.util.List; 35 import java.util.List;
  36 +import java.util.Set;
35 import java.util.stream.Collectors; 37 import java.util.stream.Collectors;
36 38
37 @Service 39 @Service
@@ -186,20 +188,19 @@ public class MesServiceImpl implements IMesService { @@ -186,20 +188,19 @@ public class MesServiceImpl implements IMesService {
186 public AjaxResult shipment(ReceiptDTO receiptDTO) { 188 public AjaxResult shipment(ReceiptDTO receiptDTO) {
187 Header header = receiptDTO.getShipmentHeader(); 189 Header header = receiptDTO.getShipmentHeader();
188 List<Detail> details = receiptDTO.getShipemtnDetails(); 190 List<Detail> details = receiptDTO.getShipemtnDetails();
189 -  
190 - LambdaQueryWrapper<ShipmentHeader> query = Wrappers.lambdaQuery();  
191 - query.eq(ShipmentHeader::getCode, header.getReferCode()).eq(ShipmentHeader::getShipmentType, header.getRefeCodeType());  
192 - List<ShipmentHeader> list = shipmentHeaderService.list(query);  
193 - if (list.size() > 0) { 191 + List<ShipmentHeader> list = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>()
  192 + .eq(ShipmentHeader::getCode, header.getReferCode())
  193 + .eq(ShipmentHeader::getShipmentType, header.getRefeCodeType()));
  194 + if (!list.isEmpty()) {
194 return AjaxResult.error("添加出库单: 上游单号referCode重复[ " + header.getReferCode() + " ],请勿重复添加。"); 195 return AjaxResult.error("添加出库单: 上游单号referCode重复[ " + header.getReferCode() + " ],请勿重复添加。");
195 } 196 }
196 AjaxResult ajaxResult = new AjaxResult(); 197 AjaxResult ajaxResult = new AjaxResult();
  198 + //校验参数
197 boolean inNull = enterIsNull(ajaxResult, header, details); 199 boolean inNull = enterIsNull(ajaxResult, header, details);
198 if (inNull) { 200 if (inNull) {
199 return ajaxResult; 201 return ajaxResult;
200 } 202 }
201 ShipmentHeader shipmentHeader = new ShipmentHeader(); 203 ShipmentHeader shipmentHeader = new ShipmentHeader();
202 - // shipmentHeader.setId(header.getId());  
203 if (StringUtils.isNotEmpty(header.getMOMID())) { 204 if (StringUtils.isNotEmpty(header.getMOMID())) {
204 shipmentHeader.setMOMID(header.getMOMID()); 205 shipmentHeader.setMOMID(header.getMOMID());
205 } 206 }
@@ -219,14 +220,30 @@ public class MesServiceImpl implements IMesService { @@ -219,14 +220,30 @@ public class MesServiceImpl implements IMesService {
219 shipmentHeader.setCreatorCode(header.getCreatorCode()); 220 shipmentHeader.setCreatorCode(header.getCreatorCode());
220 shipmentHeader.setCreatorName(header.getCreatorName()); 221 shipmentHeader.setCreatorName(header.getCreatorName());
221 shipmentHeader.setRequestedStartDate(header.getRequestedStartDate()); 222 shipmentHeader.setRequestedStartDate(header.getRequestedStartDate());
222 - shipmentHeader.setSuperiorCode(header.getSuperiorCode()); 223 +
  224 + //母件编码和母件名称去重复
  225 + String[] superiorCodeValue = header.getSuperiorCode().split(",");
  226 + String[] superiorNameValue = header.getSuperiorName().split(",");
  227 + Set<String> uniqueSuperiorCodeValue = new HashSet<>();
  228 + Set<String> uniqueSuperiorNameValue = new HashSet<>();
  229 + for (String value : superiorCodeValue) {
  230 + uniqueSuperiorCodeValue.add(value.trim());
  231 + }
  232 + for (String value : superiorNameValue) {
  233 + uniqueSuperiorNameValue.add(value.trim());
  234 + }
  235 + String superiorCode = String.join(",", uniqueSuperiorCodeValue);
  236 + String superiorName = String.join(",", uniqueSuperiorNameValue);
  237 + shipmentHeader.setSuperiorCode(superiorCode);
  238 + shipmentHeader.setSuperiorName(superiorName);
  239 +
  240 +
223 if (StringUtils.isNotEmpty(header.getTransferWarehouseName())) { 241 if (StringUtils.isNotEmpty(header.getTransferWarehouseName())) {
224 shipmentHeader.setTransferWarehouseName(header.getTransferWarehouseName()); 242 shipmentHeader.setTransferWarehouseName(header.getTransferWarehouseName());
225 } 243 }
226 if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) { 244 if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) {
227 shipmentHeader.setTransferWarehouseCode(header.getTransferWarehouseCode()); 245 shipmentHeader.setTransferWarehouseCode(header.getTransferWarehouseCode());
228 } 246 }
229 - shipmentHeader.setSuperiorName(header.getSuperiorName());  
230 shipmentHeader.setShipmentNote(header.getShipmentNote()); 247 shipmentHeader.setShipmentNote(header.getShipmentNote());
231 shipmentHeader.setRequestedDeliveryDate(header.getRequestedDeliveryDate()); 248 shipmentHeader.setRequestedDeliveryDate(header.getRequestedDeliveryDate());
232 if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) { 249 if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) {
@@ -295,6 +312,10 @@ public class MesServiceImpl implements IMesService { @@ -295,6 +312,10 @@ public class MesServiceImpl implements IMesService {
295 if (!success) { 312 if (!success) {
296 throw new ServiceException("生成出库单详情失败"); 313 throw new ServiceException("生成出库单详情失败");
297 } 314 }
  315 +
  316 +
  317 + //如果通知单号和车间、仓库相同,自动合并单据
  318 +
298 return AjaxResult.success(receiptDTO); 319 return AjaxResult.success(receiptDTO);
299 } 320 }
300 321
src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java
@@ -40,7 +40,6 @@ import java.util.List; @@ -40,7 +40,6 @@ import java.util.List;
40 public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService { 40 public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService {
41 41
42 42
43 -  
44 @Resource 43 @Resource
45 private CycleCountDetailService cycleCountDetailService; 44 private CycleCountDetailService cycleCountDetailService;
46 @Resource 45 @Resource
@@ -61,12 +60,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -61,12 +60,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
61 private ContainerService containerService; 60 private ContainerService containerService;
62 61
63 62
64 -  
65 -  
66 -  
67 -  
68 /** 63 /**
69 - *新增调整明细 64 + * 新增调整明细
  65 + *
70 * @param adjustDetail 66 * @param adjustDetail
71 * @return 67 * @return
72 */ 68 */
@@ -82,38 +78,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -82,38 +78,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
82 LambdaQueryWrapper<AdjustHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(adjustHeader); 78 LambdaQueryWrapper<AdjustHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(adjustHeader);
83 adjustHeader = adjustHeaderService.getOne(lambdaQueryWrapper); 79 adjustHeader = adjustHeaderService.getOne(lambdaQueryWrapper);
84 //检查库存 80 //检查库存
85 - if((adjustDetail.getInventoryDetailId()) != null){ 81 + if ((adjustDetail.getInventoryDetailId()) != null) {
86 InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId()); 82 InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());
87 - if(inventoryDetail == null){ 83 + if (inventoryDetail == null) {
88 return AjaxResult.error("没有该条库存明细"); 84 return AjaxResult.error("没有该条库存明细");
89 } 85 }
90 } 86 }
91 //明细单据的上层单编码需要和主单一直,主单空值则不判断 87 //明细单据的上层单编码需要和主单一直,主单空值则不判断
92 - if(StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()) || StringUtils.isNotEmpty(adjustHeader.getCheckCode())){ 88 + if (StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()) || StringUtils.isNotEmpty(adjustHeader.getCheckCode())) {
93 adjustDetail.setCycleCountHeaderCode(adjustHeader.getCycleCountHeaderCode()); 89 adjustDetail.setCycleCountHeaderCode(adjustHeader.getCycleCountHeaderCode());
94 adjustDetail.setCheckCode(adjustHeader.getCheckCode()); 90 adjustDetail.setCheckCode(adjustHeader.getCheckCode());
95 } 91 }
96 //检查盘点单 92 //检查盘点单
97 - if(StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode())){  
98 - CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(adjustDetail.getCheckDetailId());  
99 - if(cycleCountDetail == null || !cycleCountDetail.getCycleCountHeadCode().equals(adjustDetail.getCycleCountHeaderCode())){  
100 - return AjaxResult.error("盘点单错误,请核对盘点单据!"); 93 + if (StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode())) {
  94 + CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(adjustDetail.getCheckDetailId());
  95 + if (cycleCountDetail == null || !cycleCountDetail.getCycleCountHeadCode().equals(adjustDetail.getCycleCountHeaderCode())) {
  96 + return AjaxResult.error("盘点单错误,请核对盘点单据!");
101 } 97 }
102 } 98 }
103 //检查质检单 99 //检查质检单
104 - if(StringUtils.isNotEmpty(adjustDetail.getCheckCode())){ 100 + if (StringUtils.isNotEmpty(adjustDetail.getCheckCode())) {
105 CheckDetail checkDetail = checkDetailService.getById(adjustDetail.getCheckDetailId()); 101 CheckDetail checkDetail = checkDetailService.getById(adjustDetail.getCheckDetailId());
106 - if(checkDetail == null || !checkDetail.getCheckCode().equals(adjustDetail.getCheckCode())){ 102 + if (checkDetail == null || !checkDetail.getCheckCode().equals(adjustDetail.getCheckCode())) {
107 return AjaxResult.error("质检单错误,请核对质检单据!"); 103 return AjaxResult.error("质检单错误,请核对质检单据!");
108 } 104 }
109 } 105 }
110 //检查物料 106 //检查物料
111 Material material = materialService.getMaterialByCode(adjustDetail.getMaterialCode()); 107 Material material = materialService.getMaterialByCode(adjustDetail.getMaterialCode());
112 - if(material != null){  
113 - if(!material.getName().equals(adjustDetail.getMaterialName())){  
114 - return AjaxResult.error("物料名称错误!"); 108 + if (material != null) {
  109 + if (!material.getName().equals(adjustDetail.getMaterialName())) {
  110 + return AjaxResult.error("物料名称错误!");
115 } 111 }
116 - }else{ 112 + } else {
117 return AjaxResult.error("物料编码错误!"); 113 return AjaxResult.error("物料编码错误!");
118 } 114 }
119 //调整数量 115 //调整数量
@@ -133,6 +129,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -133,6 +129,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
133 129
134 /** 130 /**
135 * 调整审批 131 * 调整审批
  132 + *
136 * @param adjustDetail 133 * @param adjustDetail
137 * @return 134 * @return
138 */ 135 */
@@ -140,7 +137,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -140,7 +137,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
140 @Override 137 @Override
141 public AjaxResult adjustAgree(AdjustDetail adjustDetail) { 138 public AjaxResult adjustAgree(AdjustDetail adjustDetail) {
142 //修改状态,审批人栏填入名称,修改状态 139 //修改状态,审批人栏填入名称,修改状态
143 - if(adjustDetail.getStatus() > 1){ 140 + if (adjustDetail.getStatus() > 1) {
144 return AjaxResult.error("单据状态无法审批!"); 141 return AjaxResult.error("单据状态无法审批!");
145 } 142 }
146 adjustDetail.setAgreeBy(ShiroUtils.getName()); 143 adjustDetail.setAgreeBy(ShiroUtils.getName());
@@ -155,17 +152,17 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -155,17 +152,17 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
155 152
156 /** 153 /**
157 * 修改调整数量 154 * 修改调整数量
158 - * */ 155 + */
159 @Override 156 @Override
160 public AjaxResult editSave(AdjustDetail adjustDetail) { 157 public AjaxResult editSave(AdjustDetail adjustDetail) {
161 - //调整数量和货主,供应商  
162 - //根据ID修改 158 + //调整数量和货主,供应商
  159 + //根据ID修改
163 BigDecimal t = adjustDetail.getToQty().subtract(adjustDetail.getFromQty()); 160 BigDecimal t = adjustDetail.getToQty().subtract(adjustDetail.getFromQty());
164 adjustDetail.setGapQty(t); 161 adjustDetail.setGapQty(t);
165 - Boolean j = this.updateById(adjustDetail);  
166 - if(!j){  
167 - throw new ServiceException("修改调账明细失败!");  
168 - } 162 + Boolean j = this.updateById(adjustDetail);
  163 + if (!j) {
  164 + throw new ServiceException("修改调账明细失败!");
  165 + }
169 return AjaxResult.success("修改成功"); 166 return AjaxResult.success("修改成功");
170 } 167 }
171 168
@@ -174,157 +171,160 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -174,157 +171,160 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
174 * 调整库存 171 * 调整库存
175 * 调整数量,调整库存状态 172 * 调整数量,调整库存状态
176 * 调整插入库存 173 * 调整插入库存
  174 + *
177 * @param adjustDetail 175 * @param adjustDetail
178 * @return 176 * @return
179 */ 177 */
180 @Transactional 178 @Transactional
181 @Override 179 @Override
182 public AjaxResult updateAdjustDetail(AdjustDetail adjustDetail) { 180 public AjaxResult updateAdjustDetail(AdjustDetail adjustDetail) {
183 - if(adjustDetail.getStatus() == 1){  
184 - AjaxResult.error("该单据已调整,不允许再次调整!" );  
185 - } 181 + if (adjustDetail.getStatus() == 1) {
  182 + AjaxResult.error("该单据已调整,不允许再次调整!");
  183 + }
186 String containerCode = adjustDetail.getContainerCode(); 184 String containerCode = adjustDetail.getContainerCode();
187 Container container = containerService.getContainerByCode(containerCode); 185 Container container = containerService.getContainerByCode(containerCode);
188 adjustDetail.setLocationCode(container.getLocationCode()); 186 adjustDetail.setLocationCode(container.getLocationCode());
189 //调整单中不带库存明细时不查询 187 //调整单中不带库存明细时不查询
190 - if(adjustDetail.getInventoryDetailId() != null && adjustDetail.getInventoryDetailId() != 0) {  
191 - InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());  
192 - if (!adjustDetail.getLocationCode().equals(inventoryDetail.getLocationCode()) ||  
193 - !adjustDetail.getContainerCode().equals(inventoryDetail.getContainerCode())) {  
194 - return AjaxResult.error("调整单和所调整库存的库位容器不符,前检查数据");  
195 - }  
196 - //验证该条库存是不是正在使用,验证库存明细  
197 - Location location = new Location();  
198 - location.setCode(inventoryDetail.getLocationCode());  
199 - location.setWarehouseCode(inventoryDetail.getWarehouseCode());  
200 - LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(location);  
201 - location = locationService.getOne(lambdaQueryWrapper);  
202 - if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) {  
203 - return AjaxResult.error (inventoryDetail.getId() + "库位非空闲,请等待其他任务完成再进行调整!");  
204 - }  
205 - //判断调整库存状态还是数量  
206 - if ((adjustDetail.getToQty() != null || adjustDetail.getGapQty() != null) &&!"manual".equals(adjustDetail.getUserDef3())) {  
207 - //调整数量  
208 - this.updateAdjustDetailNumber(adjustDetail, inventoryDetail);  
209 - }  
210 - if (!adjustDetail.getFromInventorySts().equals(adjustDetail.getToInventorySts())) {  
211 - //调整库存状态  
212 - this.updateAdjustDetailState(adjustDetail, inventoryDetail);  
213 - }  
214 - }else{  
215 - String fromQtyString = adjustDetail.getFromQty().toString(); //调整前库存数量  
216 - if(StringUtils.isNotEmpty(fromQtyString) && !"manual".equals(adjustDetail.getUserDef3())){  
217 - //调整插入库存  
218 - updateAdjustDetailInsert(adjustDetail);  
219 - } 188 + if (adjustDetail.getInventoryDetailId() != null && adjustDetail.getInventoryDetailId() != 0) {
  189 + InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId());
  190 + if (!adjustDetail.getLocationCode().equals(inventoryDetail.getLocationCode()) ||
  191 + !adjustDetail.getContainerCode().equals(inventoryDetail.getContainerCode())) {
  192 + return AjaxResult.error("调整单和所调整库存的库位容器不符,前检查数据");
220 } 193 }
221 -  
222 - if ("manual".equals(adjustDetail.getUserDef3())){  
223 - LambdaQueryWrapper<InventoryDetail>queryWrapper=Wrappers.lambdaQuery();  
224 - queryWrapper.eq(InventoryDetail::getContainerCode,adjustDetail.getContainerCode())  
225 - .eq(InventoryDetail::getLocationCode,adjustDetail.getLocationCode())  
226 - .eq(InventoryDetail::getCompanyCode,adjustDetail.getCompanyCode()).last("limit 1");  
227 - InventoryDetail inventoryDetail=inventoryDetailService.getOne(queryWrapper);  
228 - if (StringUtils.isNotNull(inventoryDetail)){  
229 - //新增库存  
230 - InventoryDetail insertDetail=new InventoryDetail();  
231 - insertDetail.setMaterialCode(adjustDetail.getMaterialCode());  
232 - insertDetail.setMaterialUnit(adjustDetail.getMaterialUnit());  
233 - insertDetail.setMaterialName(adjustDetail.getMaterialName());  
234 - insertDetail.setQty(adjustDetail.getToQty());  
235 - insertDetail.setMaterialSpec(adjustDetail.getMaterialSpec());  
236 - insertDetail.setContainerCode(inventoryDetail.getContainerCode());  
237 - insertDetail.setLocationCode(inventoryDetail.getLocationCode());  
238 - insertDetail.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId());  
239 - insertDetail.setCompanyCode(inventoryDetail.getCompanyCode());  
240 - insertDetail.setInventorySts(inventoryDetail.getInventorySts());  
241 - insertDetail.setWarehouseCode(inventoryDetail.getWarehouseCode());  
242 - insertDetail.setZoneCode(inventoryDetail.getZoneCode());  
243 - insertDetail.setCreatedBy(ShiroUtils.getName());  
244 - insertDetail.setLastUpdatedBy(ShiroUtils.getName());  
245 - insertDetail.setLastUpdatedByName(ShiroUtils.getName());  
246 - insertDetail.setZoneCode(inventoryDetail.getZoneCode());  
247 - insertDetail.setTaskQty(new BigDecimal(0));  
248 - insertDetail.setReceiptDetailId(0);  
249 - insertDetail.setReceiptCode("0");  
250 - insertDetail.setInventorySts(QuantityConstant.GOOD);  
251 - inventoryDetailService.save(insertDetail);  
252 - adjustDetail.setInventoryDetailId(insertDetail.getId());  
253 -  
254 - //写入库存交易  
255 - //调整入  
256 - InventoryTransaction inventoryTransaction = new InventoryTransaction();  
257 - inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode());  
258 - inventoryTransaction.setWarehouseCode(insertDetail.getWarehouseCode());  
259 - inventoryTransaction.setCompanyCode(insertDetail.getCompanyCode());  
260 - inventoryTransaction.setLocationCode(insertDetail.getLocationCode());  
261 - inventoryTransaction.setContainerCode(insertDetail.getContainerCode());  
262 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO);  
263 - inventoryTransaction.setMaterialCode(insertDetail.getMaterialCode());  
264 - inventoryTransaction.setMaterialName(insertDetail.getMaterialName());  
265 - inventoryTransaction.setMaterialSpec(insertDetail.getMaterialSpec());  
266 - inventoryTransaction.setMaterialUnit(insertDetail.getMaterialUnit());  
267 - inventoryTransaction.setTaskQty(adjustDetail.getToQty());  
268 - inventoryTransaction.setInventorySts(insertDetail.getInventorySts());//状态  
269 - inventoryTransaction.setReferCode(insertDetail.getReferCode());  
270 - inventoryTransaction.setReferDetailId(insertDetail.getReferDetailId());  
271 - inventoryTransaction.setBatch(insertDetail.getBatch());  
272 - inventoryTransaction.setLot(insertDetail.getLot());  
273 - inventoryTransaction.setProjectNo(insertDetail.getProjectNo());  
274 - inventoryTransaction.setQcCheck(insertDetail.getQcCheck());  
275 - inventoryTransaction.setWeight(insertDetail.getWeight());  
276 - inventoryTransaction.setManufactureDate(insertDetail.getManufactureDate());  
277 - inventoryTransaction.setExpirationDate(insertDetail.getExpirationDate());  
278 - inventoryTransaction.setAgingDate(insertDetail.getCreated());  
279 - inventoryTransaction.setAttributeId(insertDetail.getAttributeId());  
280 - inventoryTransaction.setAttribute1(insertDetail.getAttribute1());  
281 - inventoryTransaction.setAttribute2(insertDetail.getAttribute2());  
282 - inventoryTransaction.setAttribute3(insertDetail.getAttribute3());  
283 - inventoryTransaction.setCreated(new Date());  
284 - inventoryTransaction.setCreatedBy(ShiroUtils.getName());  
285 - inventoryTransaction.setBillDetailId(insertDetail.getReceiptDetailId());  
286 - inventoryTransaction.setSupplierCode(insertDetail.getSupplierCode());  
287 - inventoryTransactionService.saveOrUpdate(inventoryTransaction);  
288 - } 194 + //验证该条库存是不是正在使用,验证库存明细
  195 + Location location = new Location();
  196 + location.setCode(inventoryDetail.getLocationCode());
  197 + location.setWarehouseCode(inventoryDetail.getWarehouseCode());
  198 + LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(location);
  199 + location = locationService.getOne(lambdaQueryWrapper);
  200 + if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) {
  201 + return AjaxResult.error(inventoryDetail.getId() + "库位非空闲,请等待其他任务完成再进行调整!");
  202 + }
  203 + //判断调整库存状态还是数量
  204 + if ((adjustDetail.getToQty() != null || adjustDetail.getGapQty() != null) && !"manual".equals(adjustDetail.getUserDef3())) {
  205 + //调整数量
  206 + this.updateAdjustDetailNumber(adjustDetail, inventoryDetail);
  207 + }
  208 + if (!adjustDetail.getFromInventorySts().equals(adjustDetail.getToInventorySts())) {
  209 + //调整库存状态
  210 + this.updateAdjustDetailState(adjustDetail, inventoryDetail);
  211 + }
  212 + } else {
  213 + String fromQtyString = adjustDetail.getFromQty().toString(); //调整前库存数量
  214 + if (StringUtils.isNotEmpty(fromQtyString) && !"manual".equals(adjustDetail.getUserDef3())) {
  215 + //调整插入库存
  216 + updateAdjustDetailInsert(adjustDetail);
289 } 217 }
290 - //修改调整单明细状态  
291 - adjustDetail.setStatus(3);  
292 - adjustDetail.setLastUpdatedBy(ShiroUtils.getName());  
293 - adjustDetail.setLastUpdated(new Date());  
294 - this.saveOrUpdate(adjustDetail);  
295 - //判断调整单明细是否全部已批准  
296 - List<AdjustDetail> list = this.list(new LambdaQueryWrapper<AdjustDetail>()  
297 - .eq(AdjustDetail::getAdjustCode, adjustDetail.getAdjustCode()));  
298 - boolean isFlag = false;  
299 - for (AdjustDetail detail : list) {  
300 - if(detail.getStatus()!=3){  
301 - isFlag = true;  
302 - } 218 + }
  219 +
  220 + if ("manual".equals(adjustDetail.getUserDef3())) {
  221 + LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery();
  222 + queryWrapper.eq(InventoryDetail::getContainerCode, adjustDetail.getContainerCode())
  223 + .eq(InventoryDetail::getLocationCode, adjustDetail.getLocationCode())
  224 + .eq(InventoryDetail::getCompanyCode, adjustDetail.getCompanyCode()).last("limit 1");
  225 + InventoryDetail inventoryDetail = inventoryDetailService.getOne(queryWrapper);
  226 + if (StringUtils.isNotNull(inventoryDetail)) {
  227 + //新增库存
  228 + InventoryDetail insertDetail = new InventoryDetail();
  229 + insertDetail.setMaterialCode(adjustDetail.getMaterialCode());
  230 + insertDetail.setMaterialUnit(adjustDetail.getMaterialUnit());
  231 + insertDetail.setMaterialName(adjustDetail.getMaterialName());
  232 + insertDetail.setQty(adjustDetail.getToQty());
  233 + insertDetail.setMaterialSpec(adjustDetail.getMaterialSpec());
  234 + insertDetail.setContainerCode(inventoryDetail.getContainerCode());
  235 + insertDetail.setLocationCode(inventoryDetail.getLocationCode());
  236 + insertDetail.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId());
  237 + insertDetail.setCompanyCode(inventoryDetail.getCompanyCode());
  238 + insertDetail.setInventorySts(inventoryDetail.getInventorySts());
  239 + insertDetail.setWarehouseCode(inventoryDetail.getWarehouseCode());
  240 + insertDetail.setZoneCode(inventoryDetail.getZoneCode());
  241 + insertDetail.setCreatedBy(ShiroUtils.getName());
  242 + insertDetail.setLastUpdatedBy(ShiroUtils.getName());
  243 + insertDetail.setLastUpdatedByName(ShiroUtils.getName());
  244 + insertDetail.setZoneCode(inventoryDetail.getZoneCode());
  245 + insertDetail.setTaskQty(new BigDecimal(0));
  246 + insertDetail.setReceiptDetailId(0);
  247 + insertDetail.setReceiptCode("0");
  248 + insertDetail.setInventorySts(QuantityConstant.GOOD);
  249 + inventoryDetailService.save(insertDetail);
  250 + adjustDetail.setInventoryDetailId(insertDetail.getId());
  251 +
  252 + //写入库存交易
  253 + //调整入
  254 + InventoryTransaction inventoryTransaction = new InventoryTransaction();
  255 + inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode());
  256 + inventoryTransaction.setWarehouseCode(insertDetail.getWarehouseCode());
  257 + inventoryTransaction.setCompanyCode(insertDetail.getCompanyCode());
  258 + inventoryTransaction.setLocationCode(insertDetail.getLocationCode());
  259 + inventoryTransaction.setContainerCode(insertDetail.getContainerCode());
  260 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
  261 + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO);
  262 + inventoryTransaction.setMaterialCode(insertDetail.getMaterialCode());
  263 + inventoryTransaction.setMaterialName(insertDetail.getMaterialName());
  264 + inventoryTransaction.setMaterialSpec(insertDetail.getMaterialSpec());
  265 + inventoryTransaction.setMaterialUnit(insertDetail.getMaterialUnit());
  266 + inventoryTransaction.setTaskQty(adjustDetail.getToQty());
  267 + inventoryTransaction.setInventorySts(insertDetail.getInventorySts());//状态
  268 + inventoryTransaction.setReferCode(insertDetail.getReferCode());
  269 + inventoryTransaction.setReferDetailId(insertDetail.getReferDetailId());
  270 + inventoryTransaction.setBatch(insertDetail.getBatch());
  271 + inventoryTransaction.setLot(insertDetail.getLot());
  272 + inventoryTransaction.setProjectNo(insertDetail.getProjectNo());
  273 + inventoryTransaction.setQcCheck(insertDetail.getQcCheck());
  274 + inventoryTransaction.setWeight(insertDetail.getWeight());
  275 + inventoryTransaction.setManufactureDate(insertDetail.getManufactureDate());
  276 + inventoryTransaction.setExpirationDate(insertDetail.getExpirationDate());
  277 + inventoryTransaction.setAgingDate(insertDetail.getCreated());
  278 + inventoryTransaction.setAttributeId(insertDetail.getAttributeId());
  279 + inventoryTransaction.setAttribute1(insertDetail.getAttribute1());
  280 + inventoryTransaction.setAttribute2(insertDetail.getAttribute2());
  281 + inventoryTransaction.setAttribute3(insertDetail.getAttribute3());
  282 + inventoryTransaction.setCreated(new Date());
  283 + inventoryTransaction.setCreatedBy(ShiroUtils.getName());
  284 + inventoryTransaction.setBillDetailId(insertDetail.getReceiptDetailId());
  285 + inventoryTransaction.setSupplierCode(insertDetail.getSupplierCode());
  286 + inventoryTransactionService.saveOrUpdate(inventoryTransaction);
303 } 287 }
304 - if(isFlag){  
305 - return AjaxResult.success("调整库存成功!"); 288 + }
  289 + //修改调整单明细状态
  290 + adjustDetail.setStatus(3);
  291 + adjustDetail.setLastUpdatedBy(ShiroUtils.getName());
  292 + adjustDetail.setLastUpdated(new Date());
  293 + this.saveOrUpdate(adjustDetail);
  294 + //判断调整单明细是否全部已批准
  295 + List<AdjustDetail> list = this.list(new LambdaQueryWrapper<AdjustDetail>()
  296 + .eq(AdjustDetail::getAdjustCode, adjustDetail.getAdjustCode()));
  297 + boolean isFlag = false;
  298 + for (AdjustDetail detail : list) {
  299 + if (detail.getStatus() != 3) {
  300 + isFlag = true;
306 } 301 }
307 - //已批准更新 调整单头  
308 - AdjustHeader adjustHeader = adjustHeaderService.getOne(new LambdaQueryWrapper<AdjustHeader>()  
309 - .eq(AdjustHeader::getCode, adjustDetail.getAdjustCode()));  
310 - adjustHeader.setProcessStamp("100");  
311 - adjustHeaderService.updateById(adjustHeader); 302 + }
  303 + if (isFlag) {
312 return AjaxResult.success("调整库存成功!"); 304 return AjaxResult.success("调整库存成功!");
  305 + }
  306 + //已批准更新 调整单头
  307 + AdjustHeader adjustHeader = adjustHeaderService.getOne(new LambdaQueryWrapper<AdjustHeader>()
  308 + .eq(AdjustHeader::getCode, adjustDetail.getAdjustCode()));
  309 + adjustHeader.setProcessStamp("100");
  310 + adjustHeaderService.updateById(adjustHeader);
  311 + return AjaxResult.success("调整库存成功!");
313 } 312 }
314 313
315 314
316 /** 315 /**
317 * 调整修改库存数量 316 * 调整修改库存数量
  317 + *
318 * @param adjustDetail 318 * @param adjustDetail
319 */ 319 */
320 @Transactional 320 @Transactional
321 - public void updateAdjustDetailNumber (AdjustDetail adjustDetail, InventoryDetail inventoryDetail){ 321 + public void updateAdjustDetailNumber(AdjustDetail adjustDetail, InventoryDetail inventoryDetail) {
322 /*修改库存数量,调整单据状态,写入库存交易*/ 322 /*修改库存数量,调整单据状态,写入库存交易*/
323 323
324 /*调整后的数量写入库存*/ 324 /*调整后的数量写入库存*/
325 //比较大小可以用 .compareTo()返回值 -1 小于 0 等于 1 大于 325 //比较大小可以用 .compareTo()返回值 -1 小于 0 等于 1 大于
326 //Bigdecimal 自带运算方法.add加法 .subtract减法 326 //Bigdecimal 自带运算方法.add加法 .subtract减法
327 - if(adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0){ 327 + if (adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0) {
328 //当调整后数量为0时,直接删除该条库存,并写入库存交易 328 //当调整后数量为0时,直接删除该条库存,并写入库存交易
329 //删除库存,并查询当前库位还有没有其他物料,没有则删除库存头,恢复容器和库位状态 329 //删除库存,并查询当前库位还有没有其他物料,没有则删除库存头,恢复容器和库位状态
330 InventoryDetail inv = new InventoryDetail(); 330 InventoryDetail inv = new InventoryDetail();
@@ -334,36 +334,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -334,36 +334,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
334 LambdaQueryWrapper<InventoryDetail> lamdDetail = Wrappers.lambdaQuery(inv); 334 LambdaQueryWrapper<InventoryDetail> lamdDetail = Wrappers.lambdaQuery(inv);
335 List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lamdDetail); 335 List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lamdDetail);
336 inventoryDetailService.removeById(adjustDetail.getInventoryDetailId());//删除实际库存数量为0的库存明细 336 inventoryDetailService.removeById(adjustDetail.getInventoryDetailId());//删除实际库存数量为0的库存明细
337 - if(inventoryDetailList.size() == 0){ 337 + if (inventoryDetailList.size() == 0) {
338 //恢复库位和容器状态,删除库存头 338 //恢复库位和容器状态,删除库存头
339 inventoryHeaderService.removeById(inventoryDetail.getInventoryHeaderId()); 339 inventoryHeaderService.removeById(inventoryDetail.getInventoryHeaderId());
340 locationService.updateContainerCodeAndStatus(inventoryDetail.getLocationCode(), 340 locationService.updateContainerCodeAndStatus(inventoryDetail.getLocationCode(),
341 - "",QuantityConstant.STATUS_LOCATION_EMPTY); 341 + "", QuantityConstant.STATUS_LOCATION_EMPTY);
342 containerService.updateLocationCodeAndStatus(inventoryDetail.getContainerCode(), 342 containerService.updateLocationCodeAndStatus(inventoryDetail.getContainerCode(),
343 - "",QuantityConstant.STATUS_CONTAINER_EMPTY); 343 + "", QuantityConstant.STATUS_CONTAINER_EMPTY);
344 } 344 }
345 - }else{ 345 + } else {
346 //修改库存 346 //修改库存
347 //BigDecimal temp =(adjustDetail.getFromQty()).add(adjustDetail.getGapQty()); 347 //BigDecimal temp =(adjustDetail.getFromQty()).add(adjustDetail.getGapQty());
348 inventoryDetail.setQty(adjustDetail.getToQty());//调整后的数量 348 inventoryDetail.setQty(adjustDetail.getToQty());//调整后的数量
349 inventoryDetail.setLastUpdatedBy(ShiroUtils.getName()); 349 inventoryDetail.setLastUpdatedBy(ShiroUtils.getName());
350 inventoryDetail.setLastUpdatedByName(ShiroUtils.getName()); 350 inventoryDetail.setLastUpdatedByName(ShiroUtils.getName());
351 inventoryDetail.setLastUpdated(new Date()); 351 inventoryDetail.setLastUpdated(new Date());
352 - Boolean j = inventoryDetailService.saveOrUpdate(inventoryDetail);  
353 - if(j == false){ 352 + Boolean j = inventoryDetailService.saveOrUpdate(inventoryDetail);
  353 + if (j == false) {
354 throw new SecurityException("调整修改库存失败!"); 354 throw new SecurityException("调整修改库存失败!");
355 - } } 355 + }
  356 + }
356 //写入库存交易记录 357 //写入库存交易记录
357 InventoryTransaction inventoryTransaction = new InventoryTransaction(); 358 InventoryTransaction inventoryTransaction = new InventoryTransaction();
358 inventoryTransaction.setWarehouseCode(inventoryDetail.getWarehouseCode()); 359 inventoryTransaction.setWarehouseCode(inventoryDetail.getWarehouseCode());
359 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); 360 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode());
360 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); 361 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode());
361 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); 362 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode());
362 - if(adjustDetail.getGapQty().compareTo(BigDecimal.ZERO) > 0) {  
363 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO ); 363 + if (adjustDetail.getGapQty().compareTo(BigDecimal.ZERO) > 0) {
  364 + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO);
364 } else { 365 } else {
365 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT ); 366 + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT);
366 } 367 }
  368 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
367 inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode()); 369 inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode());
368 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); 370 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode());
369 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); 371 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName());
@@ -390,18 +392,19 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -390,18 +392,19 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
390 inventoryTransaction.setBillDetailId(inventoryDetail.getReceiptDetailId()); 392 inventoryTransaction.setBillDetailId(inventoryDetail.getReceiptDetailId());
391 inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode()); 393 inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode());
392 Boolean k = inventoryTransactionService.saveOrUpdate(inventoryTransaction); 394 Boolean k = inventoryTransactionService.saveOrUpdate(inventoryTransaction);
393 - if(k == false){ 395 + if (k == false) {
394 throw new SecurityException("调整单库存交易生成失败!"); 396 throw new SecurityException("调整单库存交易生成失败!");
395 } 397 }
396 } 398 }
397 399
398 /** 400 /**
399 * 调整库存属性 401 * 调整库存属性
  402 + *
400 * @param adjustDetail 403 * @param adjustDetail
401 */ 404 */
402 @Transactional 405 @Transactional
403 - public void updateAdjustDetailState (AdjustDetail adjustDetail, InventoryDetail inventoryDetail) {  
404 - /*不考虑其他只改变库存状态即可,也需要写入库存交易。*/ 406 + public void updateAdjustDetailState(AdjustDetail adjustDetail, InventoryDetail inventoryDetail) {
  407 + /*不考虑其他只改变库存状态即可,也需要写入库存交易。*/
405 408
406 //修改库存的状态 409 //修改库存的状态
407 inventoryDetail.setInventorySts(adjustDetail.getToInventorySts());//修改为调整库存 410 inventoryDetail.setInventorySts(adjustDetail.getToInventorySts());//修改为调整库存
@@ -420,7 +423,8 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -420,7 +423,8 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
420 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); 423 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode());
421 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); 424 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode());
422 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); 425 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode());
423 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT ); 426 + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT);
  427 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
424 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); 428 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode());
425 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); 429 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName());
426 inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec()); 430 inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec());
@@ -485,10 +489,11 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -485,10 +489,11 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
485 489
486 /** 490 /**
487 * 调整插入库存 491 * 调整插入库存
  492 + *
488 * @param adjustDetail 493 * @param adjustDetail
489 */ 494 */
490 @Transactional 495 @Transactional
491 - public void updateAdjustDetailInsert (AdjustDetail adjustDetail) { 496 + public void updateAdjustDetailInsert(AdjustDetail adjustDetail) {
492 /*当系统库存为0时,调整单触发插入新库存状态*/ 497 /*当系统库存为0时,调整单触发插入新库存状态*/
493 //新生成库存头时,库位,容器都需要更新数据 498 //新生成库存头时,库位,容器都需要更新数据
494 499
@@ -499,7 +504,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -499,7 +504,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
499 ih.setContainerCode(adjustDetail.getContainerCode()); 504 ih.setContainerCode(adjustDetail.getContainerCode());
500 LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(ih); 505 LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(ih);
501 InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); 506 InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
502 - if(inventoryHeader == null){ 507 + if (inventoryHeader == null) {
503 //库存头为空,生成库存头 508 //库存头为空,生成库存头
504 inventoryHeader.setWarehouseCode(adjustDetail.getWarehouseCode()); 509 inventoryHeader.setWarehouseCode(adjustDetail.getWarehouseCode());
505 inventoryHeader.setLocationCode(adjustDetail.getLocationCode()); 510 inventoryHeader.setLocationCode(adjustDetail.getLocationCode());
@@ -515,9 +520,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -515,9 +520,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
515 inventoryHeaderService.saveOrUpdate(inventoryHeader); 520 inventoryHeaderService.saveOrUpdate(inventoryHeader);
516 //更新库位和容器 521 //更新库位和容器
517 locationService.updateContainerCodeAndStatus(inventoryHeader.getLocationCode(), 522 locationService.updateContainerCodeAndStatus(inventoryHeader.getLocationCode(),
518 - inventoryHeader.getContainerCode(),QuantityConstant.STATUS_LOCATION_EMPTY); 523 + inventoryHeader.getContainerCode(), QuantityConstant.STATUS_LOCATION_EMPTY);
519 containerService.updateLocationCodeAndStatus(inventoryHeader.getContainerCode(), 524 containerService.updateLocationCodeAndStatus(inventoryHeader.getContainerCode(),
520 - inventoryHeader.getLocationCode(),QuantityConstant.STATUS_CONTAINER_EMPTY); 525 + inventoryHeader.getLocationCode(), QuantityConstant.STATUS_CONTAINER_EMPTY);
521 526
522 } 527 }
523 //生成库存明细 528 //生成库存明细
@@ -567,6 +572,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -567,6 +572,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
567 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); 572 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode());
568 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); 573 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode());
569 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO); 574 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO);
  575 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
570 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); 576 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode());
571 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); 577 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName());
572 inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec()); 578 inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec());
@@ -596,7 +602,4 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj @@ -596,7 +602,4 @@ public class AdjustDetailServiceImpl extends ServiceImpl&lt;AdjustDetailMapper, Adj
596 } 602 }
597 603
598 604
599 -  
600 -  
601 -  
602 } 605 }
src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java
@@ -98,7 +98,7 @@ public class InventoryHeaderController extends BaseController { @@ -98,7 +98,7 @@ public class InventoryHeaderController extends BaseController {
98 lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), InventoryHeader::getCreated, createdBegin) 98 lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), InventoryHeader::getCreated, createdBegin)
99 .le(StringUtils.isNotEmpty(createdEnd), InventoryHeader::getCreated, createdEnd)//创建时间范围 99 .le(StringUtils.isNotEmpty(createdEnd), InventoryHeader::getCreated, createdEnd)//创建时间范围
100 .eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())//仓库 100 .eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())//仓库
101 - .eq(StringUtils.isNotEmpty(inventoryHeader.getZoneCode()), InventoryHeader::getZoneCode, inventoryHeader.getZoneCode()) //库 101 + .eq(StringUtils.isNotEmpty(inventoryHeader.getZoneCode()), InventoryHeader::getZoneCode, inventoryHeader.getZoneCode()) //库
102 .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()), InventoryHeader::getLocationCode, inventoryHeader.getLocationCode()) //库位 102 .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()), InventoryHeader::getLocationCode, inventoryHeader.getLocationCode()) //库位
103 .like(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()), InventoryHeader::getContainerCode, inventoryHeader.getContainerCode())//容器 103 .like(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()), InventoryHeader::getContainerCode, inventoryHeader.getContainerCode())//容器
104 .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()), InventoryHeader::getCreatedBy, inventoryHeader.getCreatedBy())//创建用户 104 .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()), InventoryHeader::getCreatedBy, inventoryHeader.getCreatedBy())//创建用户
@@ -162,7 +162,7 @@ public class InventoryHeaderController extends BaseController { @@ -162,7 +162,7 @@ public class InventoryHeaderController extends BaseController {
162 BigDecimal materialQuantity = BigDecimal.ZERO; 162 BigDecimal materialQuantity = BigDecimal.ZERO;
163 BigDecimal materialWeight = BigDecimal.ZERO; 163 BigDecimal materialWeight = BigDecimal.ZERO;
164 164
165 - if(StrUtil.isNotBlank(dimension) && ReUtil.isMatch(pattern, dimension)){ 165 + if (StrUtil.isNotBlank(dimension) && ReUtil.isMatch(pattern, dimension)) {
166 String[] parts = dimension.split("x"); 166 String[] parts = dimension.split("x");
167 double length = Double.parseDouble(parts[0]); 167 double length = Double.parseDouble(parts[0]);
168 double width = Double.parseDouble(parts[1]); 168 double width = Double.parseDouble(parts[1]);
@@ -177,12 +177,12 @@ public class InventoryHeaderController extends BaseController { @@ -177,12 +177,12 @@ public class InventoryHeaderController extends BaseController {
177 } 177 }
178 178
179 179
180 - if(materialQuantity.compareTo(BigDecimal.ZERO) > 0){  
181 - if(materialVolume.compareTo(BigDecimal.ZERO) > 0){ 180 + if (materialQuantity.compareTo(BigDecimal.ZERO) > 0) {
  181 + if (materialVolume.compareTo(BigDecimal.ZERO) > 0) {
182 materialVolumeList.add(NumberUtil.mul(materialVolume, materialQuantity)); 182 materialVolumeList.add(NumberUtil.mul(materialVolume, materialQuantity));
183 183
184 } 184 }
185 - if(materialWeight.compareTo(BigDecimal.ZERO) > 0 ){ 185 + if (materialWeight.compareTo(BigDecimal.ZERO) > 0) {
186 materialWeightList.add(NumberUtil.mul(materialWeight, materialQuantity)); 186 materialWeightList.add(NumberUtil.mul(materialWeight, materialQuantity));
187 } 187 }
188 } 188 }
@@ -191,11 +191,11 @@ public class InventoryHeaderController extends BaseController { @@ -191,11 +191,11 @@ public class InventoryHeaderController extends BaseController {
191 191
192 BigDecimal materialVolume = materialVolumeList.stream() 192 BigDecimal materialVolume = materialVolumeList.stream()
193 .reduce(BigDecimal.ZERO, BigDecimal::add) 193 .reduce(BigDecimal.ZERO, BigDecimal::add)
194 - .divide(palletVolume,4,RoundingMode.HALF_UP); 194 + .divide(palletVolume, 4, RoundingMode.HALF_UP);
195 195
196 BigDecimal materialWeight = materialWeightList.stream() 196 BigDecimal materialWeight = materialWeightList.stream()
197 .reduce(BigDecimal.ZERO, BigDecimal::add) 197 .reduce(BigDecimal.ZERO, BigDecimal::add)
198 - .divide(palletWeightCapacity,4,RoundingMode.HALF_UP); 198 + .divide(palletWeightCapacity, 4, RoundingMode.HALF_UP);
199 199
200 String materialVolumePercentage = percentageFormat.format(materialVolume); 200 String materialVolumePercentage = percentageFormat.format(materialVolume);
201 String materialWeightPercentage = percentageFormat.format(materialWeight); 201 String materialWeightPercentage = percentageFormat.format(materialWeight);
@@ -213,7 +213,6 @@ public class InventoryHeaderController extends BaseController { @@ -213,7 +213,6 @@ public class InventoryHeaderController extends BaseController {
213 } 213 }
214 214
215 215
216 -  
217 /** 216 /**
218 * 盘点库存主列表 217 * 盘点库存主列表
219 */ 218 */
src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java
@@ -14,6 +14,7 @@ import com.huaheng.framework.web.page.TableDataInfo; @@ -14,6 +14,7 @@ import com.huaheng.framework.web.page.TableDataInfo;
14 import com.huaheng.framework.web.page.TableSupport; 14 import com.huaheng.framework.web.page.TableSupport;
15 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; 15 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
16 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; 16 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
  17 +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
17 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; 18 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
18 import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction; 19 import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;
19 import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService; 20 import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
@@ -87,6 +88,7 @@ public class InventoryTransactionController extends BaseController { @@ -87,6 +88,7 @@ public class InventoryTransactionController extends BaseController {
87 .like(StringUtils.isNotEmpty(inventoryTransaction.getCreatedBy()), InventoryTransaction::getCreatedBy, inventoryTransaction.getCreatedBy())//创建用户 88 .like(StringUtils.isNotEmpty(inventoryTransaction.getCreatedBy()), InventoryTransaction::getCreatedBy, inventoryTransaction.getCreatedBy())//创建用户
88 .eq(StringUtils.isNotEmpty(inventoryTransaction.getWarehouse()), InventoryTransaction::getWarehouse, inventoryTransaction.getWarehouse()) //原仓库编码 89 .eq(StringUtils.isNotEmpty(inventoryTransaction.getWarehouse()), InventoryTransaction::getWarehouse, inventoryTransaction.getWarehouse()) //原仓库编码
89 .like(StringUtils.isNotEmpty(inventoryTransaction.getWarehouseName()), InventoryTransaction::getWarehouseName, inventoryTransaction.getWarehouseName()) //原仓库名称 90 .like(StringUtils.isNotEmpty(inventoryTransaction.getWarehouseName()), InventoryTransaction::getWarehouseName, inventoryTransaction.getWarehouseName()) //原仓库名称
  91 + .eq(StringUtils.isNotEmpty(inventoryTransaction.getZoneCode()), InventoryTransaction::getZoneCode, inventoryTransaction.getZoneCode()) //库区
90 //货主 92 //货主
91 .in(InventoryTransaction::getCompanyCode, ShiroUtils.getCompanyCodeList()) 93 .in(InventoryTransaction::getCompanyCode, ShiroUtils.getCompanyCodeList())
92 .orderByDesc(InventoryTransaction::getId); 94 .orderByDesc(InventoryTransaction::getId);
src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java
@@ -330,5 +330,10 @@ public class InventoryTransaction implements Serializable { @@ -330,5 +330,10 @@ public class InventoryTransaction implements Serializable {
330 @TableField(value = "isFlatWarehouse") 330 @TableField(value = "isFlatWarehouse")
331 @ApiModelProperty(value = "是否平库,1为平库") 331 @ApiModelProperty(value = "是否平库,1为平库")
332 private Integer isFlatWarehouse; 332 private Integer isFlatWarehouse;
333 - 333 + /**
  334 + * 库区
  335 + */
  336 + @TableField(value = "zoneCode")
  337 + @ApiModelProperty(value = "库区")
  338 + private String zoneCode;
334 } 339 }
src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java
@@ -110,7 +110,7 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei @@ -110,7 +110,7 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
110 SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); 110 SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
111 LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery(); 111 LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery();
112 lambda.select(ReceiptHeader::getCode).eq(ReceiptHeader::getReceiptType, receiptType) 112 lambda.select(ReceiptHeader::getCode).eq(ReceiptHeader::getReceiptType, receiptType)
113 - .inSql(ReceiptHeader::getCode, "select code from receipt_header where code like '"+receiptType+"%'") 113 + .inSql(ReceiptHeader::getCode, "select code from receipt_header where code like '" + receiptType + "%'")
114 .orderByDesc(ReceiptHeader::getId).last("Limit 1"); 114 .orderByDesc(ReceiptHeader::getId).last("Limit 1");
115 //如果指定类型的最后的code存在,并且日期一致。那么 code = 入库单类型 + 年月日 + (排序号 + 1) 115 //如果指定类型的最后的code存在,并且日期一致。那么 code = 入库单类型 + 年月日 + (排序号 + 1)
116 String maxCode = null; 116 String maxCode = null;
@@ -127,12 +127,12 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei @@ -127,12 +127,12 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
127 Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length())); 127 Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length()));
128 code = receiptType + df.format(now) + String.format("%05d", Count + i++); 128 code = receiptType + df.format(now) + String.format("%05d", Count + i++);
129 } else { 129 } else {
130 - code = receiptType + df.format(now) + String.format("%05d", 0000+i++); 130 + code = receiptType + df.format(now) + String.format("%05d", 0000 + i++);
131 } 131 }
132 aa.select(ReceiptHeaderHistory::getCode).eq(ReceiptHeaderHistory::getCode, code); 132 aa.select(ReceiptHeaderHistory::getCode).eq(ReceiptHeaderHistory::getCode, code);
133 List<ReceiptHeaderHistory> list = receiptheaderhistoryMapper.selectList(aa); 133 List<ReceiptHeaderHistory> list = receiptheaderhistoryMapper.selectList(aa);
134 if (list.size() <= 0) { 134 if (list.size() <= 0) {
135 - i=0; 135 + i = 0;
136 } 136 }
137 } 137 }
138 return code; 138 return code;
@@ -484,6 +484,7 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei @@ -484,6 +484,7 @@ public class ReceiptHeaderService extends ServiceImpl&lt;ReceiptHeaderMapper, Recei
484 inventoryTransaction.setLocationCode(locationCode); 484 inventoryTransaction.setLocationCode(locationCode);
485 inventoryTransaction.setContainerCode(containerCode); 485 inventoryTransaction.setContainerCode(containerCode);
486 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT); 486 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);
  487 + inventoryTransaction.setZoneCode("未知库区");
487 inventoryTransaction.setMaterialCode(receiptDetail.getMaterialCode()); 488 inventoryTransaction.setMaterialCode(receiptDetail.getMaterialCode());
488 inventoryTransaction.setMaterialName(receiptDetail.getMaterialName()); 489 inventoryTransaction.setMaterialName(receiptDetail.getMaterialName());
489 inventoryTransaction.setMaterialSpec(receiptDetail.getMaterialSpec()); 490 inventoryTransaction.setMaterialSpec(receiptDetail.getMaterialSpec());
src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -26,6 +26,7 @@ import com.huaheng.pc.config.waveMaster.service.WaveMasterService; @@ -26,6 +26,7 @@ import com.huaheng.pc.config.waveMaster.service.WaveMasterService;
26 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; 26 import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
27 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; 27 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
28 import com.huaheng.pc.momLog.service.IMomLogService; 28 import com.huaheng.pc.momLog.service.IMomLogService;
  29 +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
29 import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail; 30 import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail;
30 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService; 31 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
31 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; 32 import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
@@ -47,10 +48,7 @@ import javax.annotation.Resource; @@ -47,10 +48,7 @@ import javax.annotation.Resource;
47 import java.lang.reflect.InvocationTargetException; 48 import java.lang.reflect.InvocationTargetException;
48 import java.math.BigDecimal; 49 import java.math.BigDecimal;
49 import java.text.SimpleDateFormat; 50 import java.text.SimpleDateFormat;
50 -import java.util.ArrayList;  
51 -import java.util.Arrays;  
52 -import java.util.Date;  
53 -import java.util.List; 51 +import java.util.*;
54 52
55 53
56 /** 54 /**
@@ -182,6 +180,7 @@ public class ShipmentHeaderController extends BaseController { @@ -182,6 +180,7 @@ public class ShipmentHeaderController extends BaseController {
182 .eq(shipmentHeader.getFirstStatus() != null, ShipmentHeader::getFirstStatus, shipmentHeader.getFirstStatus()) 180 .eq(shipmentHeader.getFirstStatus() != null, ShipmentHeader::getFirstStatus, shipmentHeader.getFirstStatus())
183 .eq(shipmentHeader.getLastStatus() != null, ShipmentHeader::getLastStatus, shipmentHeader.getLastStatus()) 181 .eq(shipmentHeader.getLastStatus() != null, ShipmentHeader::getLastStatus, shipmentHeader.getLastStatus())
184 .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()), ShipmentHeader::getPushSuccessStatus, shipmentHeader.getPushSuccessStatus()) 182 .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()), ShipmentHeader::getPushSuccessStatus, shipmentHeader.getPushSuccessStatus())
  183 + .like(StringUtils.isNotEmpty(shipmentHeader.getMaterialColor()), ShipmentHeader::getMaterialColor, shipmentHeader.getMaterialColor())
185 .eq(ShipmentHeader::getDeleted, 0) 184 .eq(ShipmentHeader::getDeleted, 0)
186 .orderByAsc(ShipmentHeader::getLastStatus) 185 .orderByAsc(ShipmentHeader::getLastStatus)
187 .orderByAsc(ShipmentHeader::getRequestedStartDate) 186 .orderByAsc(ShipmentHeader::getRequestedStartDate)
@@ -511,7 +510,7 @@ public class ShipmentHeaderController extends BaseController { @@ -511,7 +510,7 @@ public class ShipmentHeaderController extends BaseController {
511 LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery(); 510 LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery();
512 headerWrapper.in(ShipmentHeader::getId, headerIdArr); 511 headerWrapper.in(ShipmentHeader::getId, headerIdArr);
513 List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(headerWrapper); 512 List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(headerWrapper);
514 - if (shipmentHeaderList.size() < 1) { 513 + if (shipmentHeaderList.isEmpty()) {
515 throw new ServiceException("单据主表不存在!!!"); 514 throw new ServiceException("单据主表不存在!!!");
516 } 515 }
517 shipmentHeaderList.forEach(shipmentHeader -> { 516 shipmentHeaderList.forEach(shipmentHeader -> {
@@ -540,7 +539,17 @@ public class ShipmentHeaderController extends BaseController { @@ -540,7 +539,17 @@ public class ShipmentHeaderController extends BaseController {
540 shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); 539 shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD);
541 StringBuilder recordID = new StringBuilder(); 540 StringBuilder recordID = new StringBuilder();
542 StringBuilder workShops = new StringBuilder(); 541 StringBuilder workShops = new StringBuilder();
543 - shipmentHeaderList.forEach(header -> workShops.append(header.getWorkshop()).append(",")); 542 + Set<String> uniqueWorkshops = new HashSet<>();
  543 + for (ShipmentHeader header : shipmentHeaderList) {
  544 + uniqueWorkshops.add(header.getWorkshop());
  545 + }
  546 + for (String workshop : uniqueWorkshops) {
  547 + workShops.append(workshop).append(",");
  548 + }
  549 + // 移除最后一个逗号
  550 + if (workShops.length() > 0) {
  551 + workShops.setLength(workShops.length() - 1);
  552 + }
544 shipmentHeaderList.forEach(header -> recordID.append(header.getId()).append(",")); 553 shipmentHeaderList.forEach(header -> recordID.append(header.getId()).append(","));
545 shipmentHeader.setWorkshop(workShops.toString()); 554 shipmentHeader.setWorkshop(workShops.toString());
546 shipmentHeader.setRecordID(recordID.toString()); 555 shipmentHeader.setRecordID(recordID.toString());
src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java
@@ -529,4 +529,11 @@ public class ShipmentHeader implements Serializable { @@ -529,4 +529,11 @@ public class ShipmentHeader implements Serializable {
529 @TableField(value = "ISMOM") 529 @TableField(value = "ISMOM")
530 @ApiModelProperty(value = "ISMOM") 530 @ApiModelProperty(value = "ISMOM")
531 private String ISMOM; 531 private String ISMOM;
  532 +
  533 + /**
  534 + * 物料颜色
  535 + */
  536 + @TableField(value = "materialColor")
  537 + @ApiModelProperty(value = "物料颜色")
  538 + public String materialColor;
532 } 539 }
src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java
@@ -40,183 +40,181 @@ import java.util.List; @@ -40,183 +40,181 @@ import java.util.List;
40 */ 40 */
41 @Controller 41 @Controller
42 @RequestMapping("/shipment/shipmentHeaderHistory") 42 @RequestMapping("/shipment/shipmentHeaderHistory")
43 -public class ShipmentHeaderHistoryController extends BaseController  
44 -{ 43 +public class ShipmentHeaderHistoryController extends BaseController {
45 private String prefix = "shipment/shipmentHeaderHistory"; 44 private String prefix = "shipment/shipmentHeaderHistory";
46 45
47 - @Autowired  
48 - private ShipmentHeaderHistoryService shipmentHeaderHistoryService;  
49 - @Autowired  
50 - private ShipmentDetailHistoryService shipmentDetailHistoryService;  
51 -  
52 -  
53 - @RequiresPermissions("shipment:bill:view")  
54 - @GetMapping()  
55 - public String shipmentHeaderHistory()  
56 - {  
57 - return prefix + "/shipmentHeaderHistory";  
58 - }  
59 -  
60 - /**  
61 - * 查询出库单主列表  
62 - */  
63 - @RequiresPermissions("shipment:bill:list")  
64 - @Log(title = "出库-出库单历史", operating="查看历史出库主单", action = BusinessType.GRANT)  
65 - @PostMapping("/list")  
66 - @ResponseBody  
67 - public TableDataInfo list(ShipmentHeaderHistory shipmentHeader, String createdBegin, String createdEnd, String deliveryDate, String startDate,String importDate) {  
68 - LambdaQueryWrapper<ShipmentHeaderHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();  
69 - PageDomain pageDomain = TableSupport.buildPageRequest();  
70 - Integer pageNum = pageDomain.getPageNum();  
71 - Integer pageSize = pageDomain.getPageSize();  
72 - Date date1 = null;  
73 - Date date2 = null;  
74 - Date date3 = null;  
75 - try {  
76 - if (StringUtils.isNotNull(deliveryDate)) {  
77 - date1 = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDate);  
78 - }else {  
79 - date1 = null;  
80 - }  
81 - } catch (java.text.ParseException e) {  
82 - //LOGGER.error("时间转换错误, string = {}", deliveryDate, e);  
83 - }  
84 -  
85 - try {  
86 - if (StringUtils.isNotNull(startDate)) {  
87 - date2 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);  
88 - }else {  
89 - date2 = null;  
90 - }  
91 - } catch (java.text.ParseException e) {  
92 - }  
93 - try {  
94 - if (StringUtils.isNotNull(importDate)) {  
95 - date3 = new SimpleDateFormat("yyyy-MM-dd").parse(importDate);  
96 - } else {  
97 - date3 = null;  
98 - }  
99 - } catch (java.text.ParseException e) {  
100 - }  
101 - Date startTime1 = date1;  
102 - Date endTime1 = null;  
103 - if(startTime1!=null){  
104 - //获取当前时间  
105 - endTime1 = DateUtils.dateAddNum(startTime1, 1,0,-1);  
106 - }  
107 -  
108 - Date startTime2 = date2;  
109 - Date endTime2 = null;  
110 - if(startTime2!=null){  
111 - //获取当前时间  
112 - endTime2 = DateUtils.dateAddNum(startTime2, 1,0,-1);  
113 - }  
114 - Date startTime3 = date3;  
115 - Date endTime3 = null;  
116 - if (startTime3 != null) {  
117 - //获取当前时间  
118 - endTime3 = DateUtils.dateAddNum(startTime3, 1, 0, -1);  
119 - }  
120 -  
121 - lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentHeaderHistory::getCreated, createdBegin)  
122 - .le(StringUtils.isNotEmpty(createdEnd), ShipmentHeaderHistory::getCreated, createdEnd)  
123 - .eq(ShipmentHeaderHistory::getWarehouseCode,ShiroUtils.getWarehouseCode())  
124 - .eq(ShipmentHeaderHistory::getDeleted,false) 46 + @Autowired
  47 + private ShipmentHeaderHistoryService shipmentHeaderHistoryService;
  48 + @Autowired
  49 + private ShipmentDetailHistoryService shipmentDetailHistoryService;
  50 +
  51 +
  52 + @RequiresPermissions("shipment:bill:view")
  53 + @GetMapping()
  54 + public String shipmentHeaderHistory() {
  55 + return prefix + "/shipmentHeaderHistory";
  56 + }
  57 +
  58 + /**
  59 + * 查询出库单主列表
  60 + */
  61 + @RequiresPermissions("shipment:bill:list")
  62 + @Log(title = "出库-出库单历史", operating = "查看历史出库主单", action = BusinessType.GRANT)
  63 + @PostMapping("/list")
  64 + @ResponseBody
  65 + public TableDataInfo list(ShipmentHeaderHistory shipmentHeader, String createdBegin, String createdEnd, String deliveryDate, String startDate, String importDate) {
  66 + LambdaQueryWrapper<ShipmentHeaderHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
  67 + PageDomain pageDomain = TableSupport.buildPageRequest();
  68 + Integer pageNum = pageDomain.getPageNum();
  69 + Integer pageSize = pageDomain.getPageSize();
  70 + Date date1 = null;
  71 + Date date2 = null;
  72 + Date date3 = null;
  73 + try {
  74 + if (StringUtils.isNotNull(deliveryDate)) {
  75 + date1 = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDate);
  76 + } else {
  77 + date1 = null;
  78 + }
  79 + } catch (java.text.ParseException e) {
  80 + //LOGGER.error("时间转换错误, string = {}", deliveryDate, e);
  81 + }
  82 +
  83 + try {
  84 + if (StringUtils.isNotNull(startDate)) {
  85 + date2 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);
  86 + } else {
  87 + date2 = null;
  88 + }
  89 + } catch (java.text.ParseException e) {
  90 + }
  91 + try {
  92 + if (StringUtils.isNotNull(importDate)) {
  93 + date3 = new SimpleDateFormat("yyyy-MM-dd").parse(importDate);
  94 + } else {
  95 + date3 = null;
  96 + }
  97 + } catch (java.text.ParseException e) {
  98 + }
  99 + Date startTime1 = date1;
  100 + Date endTime1 = null;
  101 + if (startTime1 != null) {
  102 + //获取当前时间
  103 + endTime1 = DateUtils.dateAddNum(startTime1, 1, 0, -1);
  104 + }
  105 +
  106 + Date startTime2 = date2;
  107 + Date endTime2 = null;
  108 + if (startTime2 != null) {
  109 + //获取当前时间
  110 + endTime2 = DateUtils.dateAddNum(startTime2, 1, 0, -1);
  111 + }
  112 + Date startTime3 = date3;
  113 + Date endTime3 = null;
  114 + if (startTime3 != null) {
  115 + //获取当前时间
  116 + endTime3 = DateUtils.dateAddNum(startTime3, 1, 0, -1);
  117 + }
  118 +
  119 + lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), ShipmentHeaderHistory::getCreated, createdBegin)
  120 + .le(StringUtils.isNotEmpty(createdEnd), ShipmentHeaderHistory::getCreated, createdEnd)
  121 + .eq(ShipmentHeaderHistory::getWarehouseCode, ShiroUtils.getWarehouseCode())
  122 + .eq(ShipmentHeaderHistory::getDeleted, false)
125 // .eq(date != null,ShipmentHeader::getRequestedDeliveryDate,date) 123 // .eq(date != null,ShipmentHeader::getRequestedDeliveryDate,date)
126 - .inSql(StringUtils.isNotEmpty(shipmentHeader.getNoticeNo()),ShipmentHeaderHistory::getId,"select DISTINCT shipmentId from shipment_detail_history where noticeNo like '%"+shipmentHeader.getNoticeNo()+"%'")  
127 - .in(StringUtils.isNotEmpty(shipmentHeader.getCompanyCode()),ShipmentHeaderHistory::getCompanyCode, shipmentHeader.getCompanyCode())  
128 - .in(StringUtils.isEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, ShiroUtils.getCompanyCodeList())  
129 - .inSql(StringUtils.isNotEmpty(shipmentHeader.getCode()),ShipmentHeaderHistory::getCode,"select DISTINCT shipmentCode from shipment_detail_history where recordCode = '"+shipmentHeader.getCode()+"' UNION SELECT DISTINCT shipmentCode FROM shipment_detail_history WHERE shipmentCode like '%" + shipmentHeader.getCode() + "%'")  
130 - //.inSql(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where preMergerWorkshop like '%" + shipmentHeader.getWorkshop() + "%'")  
131 - //.or()  
132 - .like(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getWorkshop, shipmentHeader.getWorkshop())  
133 - .like(StringUtils.isNotEmpty(shipmentHeader.getLastUpdatedBy()), ShipmentHeaderHistory::getLastUpdatedBy, shipmentHeader.getLastUpdatedBy())  
134 - .like(StringUtils.isNotEmpty(shipmentHeader.getShipmentNote()), ShipmentHeaderHistory::getShipmentNote, shipmentHeader.getShipmentNote())  
135 - .eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()),ShipmentHeaderHistory::getShipmentType,shipmentHeader.getShipmentType())  
136 - .like(StringUtils.isNotEmpty(shipmentHeader.getProcessType()), ShipmentHeaderHistory::getProcessType, shipmentHeader.getProcessType())  
137 - .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeaderHistory::getReferCode, shipmentHeader.getReferCode())  
138 - .like(StringUtils.isNotEmpty(shipmentHeader.getTransferWarehouseName()), ShipmentHeaderHistory::getTransferWarehouseName, shipmentHeader.getTransferWarehouseName())  
139 - .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeaderHistory::getReferCodeType, shipmentHeader.getReferCodeType())  
140 - .like(StringUtils.isNotEmpty(shipmentHeader.getOrigin()), ShipmentHeaderHistory::getOrigin, shipmentHeader.getOrigin())  
141 - .between(StringUtils.isNotNull(startTime1), ShipmentHeaderHistory::getRequestedDeliveryDate, startTime1,endTime1)  
142 - .between(StringUtils.isNotNull(startTime2), ShipmentHeaderHistory::getRequestedStartDate, startTime2,endTime2)  
143 - .between(StringUtils.isNotNull(startTime3), ShipmentHeaderHistory::getDailyScheduleImportDate, startTime3, endTime3)  
144 - .eq(shipmentHeader.getFirstStatus()!=null, ShipmentHeaderHistory::getFirstStatus, shipmentHeader.getFirstStatus())  
145 - .eq(shipmentHeader.getLastStatus()!=null, ShipmentHeaderHistory::getLastStatus, shipmentHeader.getLastStatus())  
146 - .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()),ShipmentHeaderHistory::getPushSuccessStatus,shipmentHeader.getPushSuccessStatus())  
147 - .eq(ShipmentHeaderHistory::getDeleted,0)  
148 - //.orderByAsc(ShipmentHeaderHistory::getLastUpdated)  
149 - //.orderByAsc(ShipmentHeaderHistory::getLastStatus)  
150 - //.orderByAsc(ShipmentHeaderHistory::getRequestedStartDate)  
151 - //.orderByAsc(ShipmentHeaderHistory::getCreated);  
152 - .orderByDesc(ShipmentHeaderHistory::getLastUpdated);  
153 -  
154 - if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){  
155 - /**  
156 - * 使用分页查询  
157 - */  
158 - Page<ShipmentHeaderHistory> page = new Page<>(pageNum, pageSize);  
159 - IPage<ShipmentHeaderHistory> iPage = shipmentHeaderHistoryService.page(page, lambdaQueryWrapper);  
160 - return getMpDataTable(iPage.getRecords(),iPage.getTotal());  
161 - } else {  
162 - List<ShipmentHeaderHistory> list = shipmentHeaderHistoryService.list(lambdaQueryWrapper);  
163 - return getDataTable(list);  
164 - }  
165 - }  
166 -  
167 -  
168 - /**  
169 - * 删除出库单主  
170 - */  
171 - @RequiresPermissions("shipment:bill:remove")  
172 - @Log(title = "出库-历史出库单", operating="删除历史出库主单", action = BusinessType.DELETE)  
173 - @PostMapping( "/remove")  
174 - @ResponseBody  
175 - public AjaxResult remove(String ids) {  
176 - if (StringUtils.isEmpty(ids)) { 124 + .inSql(StringUtils.isNotEmpty(shipmentHeader.getNoticeNo()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where noticeNo like '%" + shipmentHeader.getNoticeNo() + "%'")
  125 + .in(StringUtils.isNotEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, shipmentHeader.getCompanyCode())
  126 + .in(StringUtils.isEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, ShiroUtils.getCompanyCodeList())
  127 + .inSql(StringUtils.isNotEmpty(shipmentHeader.getCode()), ShipmentHeaderHistory::getCode, "select DISTINCT shipmentCode from shipment_detail_history where recordCode = '" + shipmentHeader.getCode() + "' UNION SELECT DISTINCT shipmentCode FROM shipment_detail_history WHERE shipmentCode like '%" + shipmentHeader.getCode() + "%'")
  128 + //.inSql(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where preMergerWorkshop like '%" + shipmentHeader.getWorkshop() + "%'")
  129 + //.or()
  130 + .like(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getWorkshop, shipmentHeader.getWorkshop())
  131 + .like(StringUtils.isNotEmpty(shipmentHeader.getLastUpdatedBy()), ShipmentHeaderHistory::getLastUpdatedBy, shipmentHeader.getLastUpdatedBy())
  132 + .like(StringUtils.isNotEmpty(shipmentHeader.getShipmentNote()), ShipmentHeaderHistory::getShipmentNote, shipmentHeader.getShipmentNote())
  133 + .eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()), ShipmentHeaderHistory::getShipmentType, shipmentHeader.getShipmentType())
  134 + .like(StringUtils.isNotEmpty(shipmentHeader.getProcessType()), ShipmentHeaderHistory::getProcessType, shipmentHeader.getProcessType())
  135 + .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeaderHistory::getReferCode, shipmentHeader.getReferCode())
  136 + .like(StringUtils.isNotEmpty(shipmentHeader.getTransferWarehouseName()), ShipmentHeaderHistory::getTransferWarehouseName, shipmentHeader.getTransferWarehouseName())
  137 + .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeaderHistory::getReferCodeType, shipmentHeader.getReferCodeType())
  138 + .like(StringUtils.isNotEmpty(shipmentHeader.getOrigin()), ShipmentHeaderHistory::getOrigin, shipmentHeader.getOrigin())
  139 + .between(StringUtils.isNotNull(startTime1), ShipmentHeaderHistory::getRequestedDeliveryDate, startTime1, endTime1)
  140 + .between(StringUtils.isNotNull(startTime2), ShipmentHeaderHistory::getRequestedStartDate, startTime2, endTime2)
  141 + .between(StringUtils.isNotNull(startTime3), ShipmentHeaderHistory::getDailyScheduleImportDate, startTime3, endTime3)
  142 + .eq(shipmentHeader.getFirstStatus() != null, ShipmentHeaderHistory::getFirstStatus, shipmentHeader.getFirstStatus())
  143 + .eq(shipmentHeader.getLastStatus() != null, ShipmentHeaderHistory::getLastStatus, shipmentHeader.getLastStatus())
  144 + .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()), ShipmentHeaderHistory::getPushSuccessStatus, shipmentHeader.getPushSuccessStatus())
  145 + .like(StringUtils.isNotEmpty(shipmentHeader.getMaterialColor()), ShipmentHeaderHistory::getMaterialColor, shipmentHeader.getMaterialColor())
  146 + .eq(ShipmentHeaderHistory::getDeleted, 0)
  147 + //.orderByAsc(ShipmentHeaderHistory::getLastUpdated)
  148 + //.orderByAsc(ShipmentHeaderHistory::getLastStatus)
  149 + //.orderByAsc(ShipmentHeaderHistory::getRequestedStartDate)
  150 + //.orderByAsc(ShipmentHeaderHistory::getCreated);
  151 + .orderByDesc(ShipmentHeaderHistory::getLastUpdated);
  152 +
  153 + if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
  154 + /**
  155 + * 使用分页查询
  156 + */
  157 + Page<ShipmentHeaderHistory> page = new Page<>(pageNum, pageSize);
  158 + IPage<ShipmentHeaderHistory> iPage = shipmentHeaderHistoryService.page(page, lambdaQueryWrapper);
  159 + return getMpDataTable(iPage.getRecords(), iPage.getTotal());
  160 + } else {
  161 + List<ShipmentHeaderHistory> list = shipmentHeaderHistoryService.list(lambdaQueryWrapper);
  162 + return getDataTable(list);
  163 + }
  164 + }
  165 +
  166 +
  167 + /**
  168 + * 删除出库单主
  169 + */
  170 + @RequiresPermissions("shipment:bill:remove")
  171 + @Log(title = "出库-历史出库单", operating = "删除历史出库主单", action = BusinessType.DELETE)
  172 + @PostMapping("/remove")
  173 + @ResponseBody
  174 + public AjaxResult remove(String ids) {
  175 + if (StringUtils.isEmpty(ids)) {
177 return AjaxResult.error("id不能为空"); 176 return AjaxResult.error("id不能为空");
178 } 177 }
179 - for (Integer id : Convert.toIntArray(ids))  
180 - {  
181 - boolean result=shipmentHeaderHistoryService.removeById(id);  
182 - LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper=Wrappers.lambdaQuery();  
183 - lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id)  
184 - .eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode());  
185 - Boolean flag=true;  
186 - flag=shipmentDetailHistoryService.remove(lambdaQueryWrapper);  
187 - if(result==false){  
188 - return AjaxResult.error("删除失败");  
189 - }  
190 - }  
191 - return AjaxResult.success("删除成功!");  
192 - }  
193 -  
194 - /**  
195 - * 出库单报表打印  
196 - * @return  
197 - */  
198 - @RequiresPermissions("shipment:bill:report")  
199 - @Log(title = "出库-历史出库单", operating="打印历史出库单报表", action = BusinessType.OTHER)  
200 - @GetMapping("/report/{id}")  
201 - public String report(@PathVariable("id") Integer id, ModelMap mmap)  
202 - {  
203 - ShipmentHeaderHistory shipmentHeaderHistory = shipmentHeaderHistoryService.getById(id);  
204 - mmap.put("shipmentHeader", shipmentHeaderHistory);  
205 -  
206 - LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();  
207 - lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id)  
208 - .eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode());  
209 - List<ShipmentDetailHistory> details = shipmentDetailHistoryService.list(lambdaQueryWrapper);  
210 - mmap.put("details", details);  
211 -  
212 - return prefix + "/report";  
213 - }  
214 -  
215 - @PostMapping("/getShipmentHeader")  
216 - @ResponseBody  
217 - public AjaxResult<ShipmentHeaderHistory> getShipmentHeader(int id){  
218 - return AjaxResult.success(shipmentHeaderHistoryService.getById(id));  
219 - } 178 + for (Integer id : Convert.toIntArray(ids)) {
  179 + boolean result = shipmentHeaderHistoryService.removeById(id);
  180 + LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
  181 + lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId, id)
  182 + .eq(ShipmentDetailHistory::getWarehouseCode, ShiroUtils.getWarehouseCode());
  183 + Boolean flag = true;
  184 + flag = shipmentDetailHistoryService.remove(lambdaQueryWrapper);
  185 + if (result == false) {
  186 + return AjaxResult.error("删除失败");
  187 + }
  188 + }
  189 + return AjaxResult.success("删除成功!");
  190 + }
  191 +
  192 + /**
  193 + * 出库单报表打印
  194 + *
  195 + * @return
  196 + */
  197 + @RequiresPermissions("shipment:bill:report")
  198 + @Log(title = "出库-历史出库单", operating = "打印历史出库单报表", action = BusinessType.OTHER)
  199 + @GetMapping("/report/{id}")
  200 + public String report(@PathVariable("id") Integer id, ModelMap mmap) {
  201 + ShipmentHeaderHistory shipmentHeaderHistory = shipmentHeaderHistoryService.getById(id);
  202 + mmap.put("shipmentHeader", shipmentHeaderHistory);
  203 +
  204 + LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery();
  205 + lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId, id)
  206 + .eq(ShipmentDetailHistory::getWarehouseCode, ShiroUtils.getWarehouseCode());
  207 + List<ShipmentDetailHistory> details = shipmentDetailHistoryService.list(lambdaQueryWrapper);
  208 + mmap.put("details", details);
  209 +
  210 + return prefix + "/report";
  211 + }
  212 +
  213 + @PostMapping("/getShipmentHeader")
  214 + @ResponseBody
  215 + public AjaxResult<ShipmentHeaderHistory> getShipmentHeader(int id) {
  216 + return AjaxResult.success(shipmentHeaderHistoryService.getById(id));
  217 + }
220 218
221 219
222 } 220 }
src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java
@@ -485,31 +485,32 @@ public class ShipmentHeaderHistory implements Serializable { @@ -485,31 +485,32 @@ public class ShipmentHeaderHistory implements Serializable {
485 485
486 /** 486 /**
487 * 回传错误次数 487 * 回传错误次数
  488 + *
488 * @return 489 * @return
489 */ 490 */
490 @TableField(value = "pushErrorCount") 491 @TableField(value = "pushErrorCount")
491 - @ApiModelProperty(value="回传错误次数") 492 + @ApiModelProperty(value = "回传错误次数")
492 public Integer pushErrorCount; 493 public Integer pushErrorCount;
493 494
494 /** 495 /**
495 * 错误消息 496 * 错误消息
496 */ 497 */
497 @TableField(value = "ErrorMsg") 498 @TableField(value = "ErrorMsg")
498 - @ApiModelProperty(value="错误消息") 499 + @ApiModelProperty(value = "错误消息")
499 public String errorMsg; 500 public String errorMsg;
500 501
501 /** 502 /**
502 * 回传状态,0默认,1成功,2失败 503 * 回传状态,0默认,1成功,2失败
503 */ 504 */
504 @TableField(value = "pushSuccessStatus") 505 @TableField(value = "pushSuccessStatus")
505 - @ApiModelProperty(value="回传状态,0默认,1成功,2失败,3提前过账") 506 + @ApiModelProperty(value = "回传状态,0默认,1成功,2失败,3提前过账")
506 public Integer pushSuccessStatus; 507 public Integer pushSuccessStatus;
507 508
508 /** 509 /**
509 * 来源 510 * 来源
510 */ 511 */
511 @TableField(value = "origin") 512 @TableField(value = "origin")
512 - @ApiModelProperty(value="来源") 513 + @ApiModelProperty(value = "来源")
513 public String origin; 514 public String origin;
514 515
515 /** 516 /**
@@ -530,6 +531,13 @@ public class ShipmentHeaderHistory implements Serializable { @@ -530,6 +531,13 @@ public class ShipmentHeaderHistory implements Serializable {
530 * 入库单的最后更新时间 531 * 入库单的最后更新时间
531 */ 532 */
532 @TableField(value = "lastUpdateTime") 533 @TableField(value = "lastUpdateTime")
533 - @ApiModelProperty(value="入库单的最后更新时间") 534 + @ApiModelProperty(value = "入库单的最后更新时间")
534 private Date lastUpdateTime; 535 private Date lastUpdateTime;
  536 +
  537 + /**
  538 + * 物料颜色
  539 + */
  540 + @TableField(value = "materialColor")
  541 + @ApiModelProperty(value = "物料颜色")
  542 + public String materialColor;
535 } 543 }
src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
@@ -558,6 +558,7 @@ public class ReceiptTaskService { @@ -558,6 +558,7 @@ public class ReceiptTaskService {
558 //记录库存交易记录 558 //记录库存交易记录
559 InventoryTransaction inventoryTransaction = new InventoryTransaction(); 559 InventoryTransaction inventoryTransaction = new InventoryTransaction();
560 ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId()); 560 ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId());
  561 + inventoryTransaction.setZoneCode(inventoryHeader.getZoneCode());
561 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT); 562 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);
562 inventoryTransaction.setWarehouseCode(taskDetail.getWarehouseCode()); 563 inventoryTransaction.setWarehouseCode(taskDetail.getWarehouseCode());
563 inventoryTransaction.setCompanyCode(taskDetail.getCompanyCode()); 564 inventoryTransaction.setCompanyCode(taskDetail.getCompanyCode());
src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java
@@ -359,6 +359,7 @@ public class ShipmentTaskService { @@ -359,6 +359,7 @@ public class ShipmentTaskService {
359 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); 359 inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode());
360 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); 360 inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode());
361 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); 361 inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode());
  362 + inventoryTransaction.setZoneCode(inventoryHeader.getZoneCode());
362 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_SHIPMENT); 363 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_SHIPMENT);
363 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); 364 inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode());
364 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); 365 inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName());
src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
@@ -159,7 +159,7 @@ public class TransferTaskService { @@ -159,7 +159,7 @@ public class TransferTaskService {
159 // locationService.updateStatus(desLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); 159 // locationService.updateStatus(desLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode);
160 int updateCount = locationService.updateStatusNew(desLocationCode, warehouseCode, 160 int updateCount = locationService.updateStatusNew(desLocationCode, warehouseCode,
161 QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY); 161 QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY);
162 - if(updateCount != 1) { 162 + if (updateCount != 1) {
163 throw new ServiceException("库位已经锁定,不允许再分到这个库位"); 163 throw new ServiceException("库位已经锁定,不允许再分到这个库位");
164 } 164 }
165 containerService.updateLocationCodeAndStatus(sourceLocation.getContainerCode(), 165 containerService.updateLocationCodeAndStatus(sourceLocation.getContainerCode(),
@@ -236,6 +236,7 @@ public class TransferTaskService { @@ -236,6 +236,7 @@ public class TransferTaskService {
236 inventoryTransaction.setLocationCode(taskDetail.getToLocation()); 236 inventoryTransaction.setLocationCode(taskDetail.getToLocation());
237 inventoryTransaction.setContainerCode(taskDetail.getContainerCode()); 237 inventoryTransaction.setContainerCode(taskDetail.getContainerCode());
238 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFERINTO); 238 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFERINTO);
  239 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
239 inventoryTransaction.setMaterialCode(taskDetail.getMaterialCode()); 240 inventoryTransaction.setMaterialCode(taskDetail.getMaterialCode());
240 inventoryTransaction.setMaterialName(taskDetail.getMaterialName()); 241 inventoryTransaction.setMaterialName(taskDetail.getMaterialName());
241 inventoryTransaction.setMaterialSpec(taskDetail.getMaterialSpec()); 242 inventoryTransaction.setMaterialSpec(taskDetail.getMaterialSpec());
@@ -259,6 +260,7 @@ public class TransferTaskService { @@ -259,6 +260,7 @@ public class TransferTaskService {
259 inventoryTransactionService.save(inventoryTransaction); 260 inventoryTransactionService.save(inventoryTransaction);
260 inventoryTransaction.setLocationCode(taskDetail.getFromLocation()); 261 inventoryTransaction.setLocationCode(taskDetail.getFromLocation());
261 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFEROUT); 262 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFEROUT);
  263 + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode());
262 inventoryTransactionService.save(inventoryTransaction); 264 inventoryTransactionService.save(inventoryTransaction);
263 } 265 }
264 if (taskDetailList.size() != 0) { 266 if (taskDetailList.size() != 0) {
src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html
@@ -10,6 +10,15 @@ @@ -10,6 +10,15 @@
10 <div class="select-list"> 10 <div class="select-list">
11 <ul> 11 <ul>
12 <li> 12 <li>
  13 + 库区:
  14 + <select id="zoneCode" name="zoneCode" th:with="list=${@zone.getCode()}">
  15 + <option value="">所有</option>
  16 + <option th:each="item : ${list}" th:text="${item['name']}"
  17 + th:value="${item['code']}"
  18 + th:attr=" code = ${item['code']}"></option>
  19 + </select>
  20 + </li>
  21 + <li>
13 库位编码:<input type="text" name="locationCode"/> 22 库位编码:<input type="text" name="locationCode"/>
14 </li> 23 </li>
15 <li> 24 <li>
@@ -102,6 +111,7 @@ @@ -102,6 +111,7 @@
102 var prefix = ctx + "inventory/inventoryTransaction"; 111 var prefix = ctx + "inventory/inventoryTransaction";
103 var inventoryStatus = [[${@dict.getType('inventorySts')}]]; 112 var inventoryStatus = [[${@dict.getType('inventorySts')}]];
104 var warehouses = [[${@WarehouseService.getCode()}]]; 113 var warehouses = [[${@WarehouseService.getCode()}]];
  114 + var zone = [[${@zone.getCode()}]];
105 var inventoryTransactionType = [[${@dict.getType('inventoryTransactionType')}]]; 115 var inventoryTransactionType = [[${@dict.getType('inventoryTransactionType')}]];
106 $(function () { 116 $(function () {
107 var options = { 117 var options = {
@@ -148,6 +158,21 @@ @@ -148,6 +158,21 @@
148 } 158 }
149 }, 159 },
150 { 160 {
  161 + field: 'zoneCode',
  162 + title: '库区',
  163 + align: 'center',
  164 + formatter: function (value, row, index) {
  165 + var actions = [];
  166 + $.each(zone, function (index, dict) {
  167 + if (dict.code == value) {
  168 + actions.push("<span class='badge badge-info'>" + dict.name + "</span>");
  169 + return false;
  170 + }
  171 + });
  172 + return actions.join('');
  173 + }
  174 + },
  175 + {
151 field: 'locationCode', 176 field: 'locationCode',
152 title: '库位编号' 177 title: '库位编号'
153 }, 178 },
src/main/resources/templates/receipt/receiving/receiving.html
@@ -327,6 +327,19 @@ @@ -327,6 +327,19 @@
327 field: 'materialUnit', 327 field: 'materialUnit',
328 title: '单位' 328 title: '单位'
329 }, 329 },
  330 + {
  331 + field: 'isFlatWarehouse',
  332 + title: '仓库类型',
  333 + visible: true,
  334 + align: 'center',
  335 + formatter: function (value, row, index) {
  336 + if (value == 1) {
  337 + return '<span style="color:#51855c">平库</span>'
  338 + } else {
  339 + return '<span style="color:black">立库</span>'
  340 + }
  341 + }
  342 + },
330 343
331 ] 344 ]
332 }); 345 });
src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html
@@ -104,6 +104,9 @@ @@ -104,6 +104,9 @@
104 </select> 104 </select>
105 </li> 105 </li>
106 <li> 106 <li>
  107 + 颜色信息:<input type="text" name="materialColor"/>
  108 + </li>
  109 + <li>
107 备注:<input type="text" name="shipmentNote"/> 110 备注:<input type="text" name="shipmentNote"/>
108 </li> 111 </li>
109 <li class="time"> 112 <li class="time">
@@ -499,19 +502,22 @@ @@ -499,19 +502,22 @@
499 field: 'requestedDeliveryDate', 502 field: 'requestedDeliveryDate',
500 title: '计划完成日期', 503 title: '计划完成日期',
501 }, 504 },
  505 + // {
  506 + // field: 'workshop',
  507 + // title: '生产车间',
  508 + // formatter: function (value, row, index) {
  509 + // var actions = [];
  510 + // if (value == undefined || value == '')
  511 + // value = " "
  512 + // else
  513 + // actions.push("<div class='textEllipsis'>" + value + "</div>")
  514 + // return actions.join(" ")
  515 + // }
  516 + // },
502 { 517 {
503 field: 'workshop', 518 field: 'workshop',
504 title: '生产车间', 519 title: '生产车间',
505 - formatter: function (value, row, index) {  
506 - var actions = [];  
507 - if (value == undefined || value == '')  
508 - value = " "  
509 - else  
510 - actions.push("<div class='textEllipsis'>" + value + "</div>")  
511 - return actions.join(" ")  
512 - }  
513 }, 520 },
514 -  
515 { 521 {
516 field: 'shipmentNote', 522 field: 'shipmentNote',
517 title: '备注', 523 title: '备注',
@@ -591,6 +597,18 @@ @@ -591,6 +597,18 @@
591 visible: true 597 visible: true
592 }, 598 },
593 { 599 {
  600 + field: 'materialColor',
  601 + title: '颜色信息',
  602 + formatter: function (value, row, index) {
  603 + var actions = [];
  604 + if (value == undefined || value == '')
  605 + value = " "
  606 + else
  607 + actions.push('<pre style="max-height:50px; white-space: pre-wrap; width:500px">' + value + '</pre>')
  608 + return actions.join(" ")
  609 + }
  610 + },
  611 + {
594 field: 'errorMsg', 612 field: 'errorMsg',
595 title: '错误信息', 613 title: '错误信息',
596 formatter: function (value, row, index) { 614 formatter: function (value, row, index) {
src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html
@@ -98,6 +98,9 @@ @@ -98,6 +98,9 @@
98 </li> 98 </li>
99 </li> 99 </li>
100 <li> 100 <li>
  101 + 颜色信息:<input type="text" name="materialColor"/>
  102 + </li>
  103 + <li>
101 备注:<input type="text" name="shipmentNote"/> 104 备注:<input type="text" name="shipmentNote"/>
102 </li> 105 </li>
103 <li class="time"> 106 <li class="time">
@@ -454,17 +457,21 @@ @@ -454,17 +457,21 @@
454 field: 'requestedDeliveryDate', 457 field: 'requestedDeliveryDate',
455 title: '计划完成日期', 458 title: '计划完成日期',
456 }, 459 },
  460 + // {
  461 + // field: 'workshop',
  462 + // title: '生产车间',
  463 + // formatter: function(value, row, index) {
  464 + // var actions = [];
  465 + // if(value == undefined || value == '')
  466 + // value = " "
  467 + // else
  468 + // actions.push("<div class='textEllipsis'>"+value+"</div>")
  469 + // return actions.join(" ")
  470 + // }
  471 + // },
457 { 472 {
458 field: 'workshop', 473 field: 'workshop',
459 title: '生产车间', 474 title: '生产车间',
460 - formatter: function(value, row, index) {  
461 - var actions = [];  
462 - if(value == undefined || value == '')  
463 - value = " "  
464 - else  
465 - actions.push("<div class='textEllipsis'>"+value+"</div>")  
466 - return actions.join(" ")  
467 - }  
468 }, 475 },
469 { 476 {
470 field: 'shipmentNote', 477 field: 'shipmentNote',
@@ -553,6 +560,18 @@ @@ -553,6 +560,18 @@
553 visible: true 560 visible: true
554 }, 561 },
555 { 562 {
  563 + field: 'materialColor',
  564 + title: '颜色信息',
  565 + formatter: function (value, row, index) {
  566 + var actions = [];
  567 + if (value == undefined || value == '')
  568 + value = " "
  569 + else
  570 + actions.push('<pre style="max-height:50px; white-space: pre-wrap; width:500px">' + value + '</pre>')
  571 + return actions.join(" ")
  572 + }
  573 + },
  574 + {
556 field: 'errorMsg', 575 field: 'errorMsg',
557 title: '错误信息', 576 title: '错误信息',
558 formatter: function (value, row, index) { 577 formatter: function (value, row, index) {