Commit 8328f1eed6df5d4be6608a20d53d4577071794b9

Authored by 周鸿
1 parent 5145b9c8

入库组盘生成任务时,有一个显示新建任务状态,实际生成了任务

src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
... ... @@ -138,16 +138,36 @@ public class ReceiptTaskService {
138 138 if (!receiptContainerHeader.getWarehouseCode().equals(ShiroUtils.getWarehouseCode())) {
139 139 throw new ServiceException("id:" + id + "的入库组盘不能在" + ShiroUtils.getWarehouseCode() + "仓库操作");
140 140 }
141   - Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode());
142   - if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
143   - throw new ServiceException("托盘已经锁定,不能生成任务");
144   - }
145   - //锁定容器
146   - containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode());
  141 +
  142 +
147 143 //查询入库组盘明细
148   - List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id));
  144 + LambdaQueryWrapper<ReceiptContainerDetail> lam = Wrappers.lambdaQuery();
  145 + lam.eq(ReceiptContainerDetail::getReceiptContainerId,id);
  146 + lam.lt(ReceiptContainerDetail::getStatus,QuantityConstant.RECEIPT_CONTAINER_TASK);
  147 + List<ReceiptContainerDetail> list = receiptContainerDetailService.list(lam);
  148 +
  149 +// List<ReceiptContainerDetail> list = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getReceiptContainerId, id));
149 150 if (list.isEmpty()) {
150   - throw new ServiceException("id:" + id + "的入库组盘,没有组盘明细,请先组盘!");
  151 + throw new ServiceException("id:" + id + "的入库组盘,没有未生成任务的组盘明细!");
  152 + }
  153 + Container container = containerService.getContainerByCode(receiptContainerHeader.getContainerCode());
  154 + if(container.getStatus().equals(QuantityConstant.STATUS_CONTAINER_LOCK)) {
  155 + //一般只有一个异常数据
  156 + ReceiptContainerDetail itemReceiptContainerDetail = list.get(0);
  157 + if (itemReceiptContainerDetail!=null) {
  158 + LambdaQueryWrapper<TaskDetail> detaillam = Wrappers.lambdaQuery();
  159 + detaillam.eq(TaskDetail::getAllocationId,itemReceiptContainerDetail.getId());
  160 + detaillam.last("limit 1");
  161 + TaskDetail taskDetail=taskDetailService.getOne(detaillam);
  162 + if(taskDetail!=null){
  163 + //更新入库组盘明细状态
  164 + itemReceiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
  165 + receiptContainerDetailService.updateById(itemReceiptContainerDetail);
  166 + return AjaxResult.success("生成任务成功").setData(taskDetail.getTaskId());
  167 + }
  168 + }else{
  169 + throw new ServiceException("托盘已经锁定,不能生成任务");
  170 + }
151 171 }
152 172 if(StringUtils.isNotEmpty(receiptContainerHeader.getFromLocation())) {
153 173 locationService.updateStatus(receiptContainerHeader.getFromLocation(), QuantityConstant.STATUS_LOCATION_LOCK);
... ... @@ -157,11 +177,11 @@ public class ReceiptTaskService {
157 177 locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_LOCK);
158 178 Location desLocation = locationService.getLocationByCode(locationCode);
159 179 if (desLocation==null){
160   - return AjaxResult.error(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode);
  180 + throw new ServiceException(receiptContainerHeader.getContainerCode()+",该托盘没有这个库位,"+locationCode);
161 181 }
162 182 String loginWarehouse = ShiroUtils.getWarehouseCode();
163 183 if(!desLocation.getWarehouseCode().equals(loginWarehouse)) {
164   - return AjaxResult.error("库位对应仓库不对");
  184 + throw new ServiceException("库位对应仓库不对");
165 185 }
166 186 //if (taskHeaderService.getUncompleteTaskInNear(desLocation) > 0) {
167 187 // return AjaxResult.error("目标库位:" + desLocation + "旁边存在任务,请完成任务以后再分配");
... ... @@ -174,109 +194,24 @@ public class ReceiptTaskService {
174 194 throw new ServiceException("组盘状态更新失败");
175 195 }
176 196 }
177   - //添加任务主表
178   - TaskHeader task = new TaskHeader();
179   - //成品入库任务将typeid改成1
180   - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
181   - task.setTypeId(1);
182   - }
183   - task.setAllocationHeadId(receiptContainerHeader.getId());
184   - task.setElectricQuantity(receiptContainerHeader.getElectricQuantity());
185   - task.setAllocationHeadId(receiptContainerHeader.getId());
186   - task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
187   - task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
188   - task.setCompanyCode(receiptContainerHeader.getCompanyCode());
189   - task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
190   - task.setTaskType(receiptContainerHeader.getTaskType());
191   - task.setFromLocation(receiptContainerHeader.getFromLocation());
192   - if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){
193   - task.setToLocation(receiptContainerHeader.getToLocation());
194   - Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode());
195   - if(location != null) {
196   - task.setZoneCode(location.getZoneCode());
197   - }
198   - }
199   - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
200   - task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode());
201   - task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId());
202   - }
203   - task.setContainerCode(receiptContainerHeader.getContainerCode());
204   - task.setRecvDock(receiptContainerHeader.getRecvDock());
205   - task.setPort(receiptContainerHeader.getPort());
206   - //是否需要检测放电
  197 + //锁定容器
  198 + containerService.updateStatus(receiptContainerHeader.getContainerCode(), QuantityConstant.STATUS_CONTAINER_LOCK, container.getWarehouseCode());
  199 + //是否需要检测放电
207 200 int isBatteryFlag=1;
  201 + TaskHeader task=createTask(receiptContainerHeader);
  202 +
208 203 if (taskHeaderService.save(task)) {
209 204 //添加任务明细表
210 205 for (ReceiptContainerDetail item : list) {
211   - TaskDetail taskDetail = new TaskDetail();
212   - taskDetail.setTaskId(task.getId());
213   - taskDetail.setTaskType(task.getTaskType());
214   - taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
215   - taskDetail.setWarehouseCode(task.getWarehouseCode());
216   - taskDetail.setAllocationId(item.getId());
217   - taskDetail.setCompanyCode(task.getCompanyCode());
218   - taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode());
219   - taskDetail.setMaterialCode(item.getMaterialCode());
220   - taskDetail.setMaterialName(item.getMaterialName());
221   - taskDetail.setMaterialSpec(item.getMaterialSpec());
222   - taskDetail.setMaterialUnit(item.getMaterialUnit());
223   - taskDetail.setMaterialIsBattery(item.getMaterialIsBattery());
224   - taskDetail.setInventorySts(item.getInventorySts());
225   - taskDetail.setBillCode(item.getReceiptCode());
226   - taskDetail.setBillDetailId(item.getReceiptDetailId());
227   - //成品入库任务将typeid改成1
228   - if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
229   - taskDetail.setTypeId(1);
230   - //taskDetail.setBillDetailId(item.getBarcodeDetailsId());
231   - taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode());
232   - taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId());
233   - //taskDetail.setBillDetailId(rec);
234   - }
235   - taskDetail.setQty(item.getQty());
236   - taskDetail.setWeights(item.getWeights());
237   - taskDetail.setContainerCode(task.getContainerCode());
238   - taskDetail.setFromLocation(task.getFromLocation());
239   - taskDetail.setElectricQuantity(item.getElectricQuantity());
240   - taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
241   - taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight());
242   - taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
243   - taskDetail.setMaterialTareWeight(item.getMaterialTareWeight());
244   - taskDetail.setMaterialBatch(item.getMaterialBatch());
245   - if(StringUtils.isNotEmpty(task.getToLocation() )) {
246   - taskDetail.setToLocation(task.getToLocation());
247   - }
248   - if(StringUtils.isNotEmpty(item.getSn() )){
249   - taskDetail.setSn(item.getSn());
250   - }
251   - taskDetail.setBatch(item.getBatch());
252   - taskDetail.setProjectNo(item.getProjectNo());
253   - taskDetail.setBatteryQty(item.getBatteryQty());
254   - taskDetail.setBatteryPackType(item.getBatteryPackType());
255   - taskDetail.setBatteryTypes(item.getBatteryTypes());
256   - taskDetail.setCompleteness(item.getCompleteness());
257   - taskDetail.setRemark(item.getRemark());
258   - taskDetail.setCountryCode(item.getCountryCode());
259   - taskDetail.setRecycler(item.getRecycler());
260   - /* System.out.println("id=="+item.getId());
261   - System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery());
262   - System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/
263   - if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){
264   - taskDetail.setDischargeReview(2);
265   - isBatteryFlag=2;
266   - }else{
267   - taskDetail.setDischargeReview(1);
  206 + TaskDetail taskDetail=createTaskDetail(task,isBatteryFlag,item,receiptContainerHeader);
  207 + if (!taskDetailService.save(taskDetail)) {
  208 + throw new ServiceException("生成任务明细失败");
268 209 }
269 210 //更新入库组盘明细状态
270 211 item.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);
271 212 if (!receiptContainerDetailService.updateById(item)) {
272 213 throw new ServiceException("更新入库组盘明细状态出错");
273 214 }
274   - taskDetail.setPoundCode(item.getPoundCode());
275   - taskDetail.setSupplierCode(item.getSupplierCode());
276   - if (!taskDetailService.save(taskDetail)) {
277   - throw new ServiceException("生成任务明细失败");
278   - }
279   -
280 215  
281 216 /* 修改明细状态为上架*/
282 217 ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());
... ... @@ -315,6 +250,106 @@ public class ReceiptTaskService {
315 250  
316 251 }
317 252  
  253 +
  254 + public TaskHeader createTask(ReceiptContainerHeader receiptContainerHeader){
  255 + //添加任务主表
  256 + TaskHeader task = new TaskHeader();
  257 + //成品入库任务将typeid改成1
  258 + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
  259 + task.setTypeId(1);
  260 + }
  261 + task.setAllocationHeadId(receiptContainerHeader.getId());
  262 + task.setElectricQuantity(receiptContainerHeader.getElectricQuantity());
  263 + task.setAllocationHeadId(receiptContainerHeader.getId());
  264 + task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
  265 + task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());
  266 + task.setCompanyCode(receiptContainerHeader.getCompanyCode());
  267 + task.setStatus(QuantityConstant.TASK_STATUS_BUILD);
  268 + task.setTaskType(receiptContainerHeader.getTaskType());
  269 + task.setFromLocation(receiptContainerHeader.getFromLocation());
  270 + if(StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){
  271 + task.setToLocation(receiptContainerHeader.getToLocation());
  272 + Location location = locationService.getLocationByCode(task.getToLocation(), ShiroUtils.getWarehouseCode());
  273 + if(location != null) {
  274 + task.setZoneCode(location.getZoneCode());
  275 + }
  276 + }
  277 + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
  278 + task.setBarCodeHeaderCode(receiptContainerHeader.getBarCodeHeaderCode());
  279 + task.setBarCodeHeaderId(receiptContainerHeader.getBarCodeHeaderId());
  280 + }
  281 + task.setContainerCode(receiptContainerHeader.getContainerCode());
  282 + task.setRecvDock(receiptContainerHeader.getRecvDock());
  283 + task.setPort(receiptContainerHeader.getPort());
  284 +
  285 + return task;
  286 + }
  287 +
  288 +
  289 + public TaskDetail createTaskDetail(TaskHeader task,int isBatteryFlag,ReceiptContainerDetail item,ReceiptContainerHeader receiptContainerHeader){
  290 + TaskDetail taskDetail = new TaskDetail();
  291 + taskDetail.setTaskId(task.getId());
  292 + taskDetail.setTaskType(task.getTaskType());
  293 + taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT);
  294 + taskDetail.setWarehouseCode(task.getWarehouseCode());
  295 + taskDetail.setAllocationId(item.getId());
  296 + taskDetail.setCompanyCode(task.getCompanyCode());
  297 + taskDetail.setBatteryPackTwoCode(item.getBatteryPackTwoCode());
  298 + taskDetail.setMaterialCode(item.getMaterialCode());
  299 + taskDetail.setMaterialName(item.getMaterialName());
  300 + taskDetail.setMaterialSpec(item.getMaterialSpec());
  301 + taskDetail.setMaterialUnit(item.getMaterialUnit());
  302 + taskDetail.setMaterialIsBattery(item.getMaterialIsBattery());
  303 + taskDetail.setInventorySts(item.getInventorySts());
  304 + taskDetail.setBillCode(item.getReceiptCode());
  305 + taskDetail.setBillDetailId(item.getReceiptDetailId());
  306 + //成品入库任务将typeid改成1
  307 + if(StringUtils.isNotEmpty(receiptContainerHeader.getBarCodeHeaderCode())){
  308 + taskDetail.setTypeId(1);
  309 + //taskDetail.setBillDetailId(item.getBarcodeDetailsId());
  310 + taskDetail.setBarcodeDetailsCode(item.getBarcodeDetailsCode());
  311 + taskDetail.setBarcodeDetailsId(item.getBarcodeDetailsId());
  312 + //taskDetail.setBillDetailId(rec);
  313 + }
  314 + taskDetail.setQty(item.getQty());
  315 + taskDetail.setWeights(item.getWeights());
  316 + taskDetail.setContainerCode(task.getContainerCode());
  317 + taskDetail.setFromLocation(task.getFromLocation());
  318 + taskDetail.setElectricQuantity(item.getElectricQuantity());
  319 + taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
  320 + taskDetail.setMaterialGrossWeight(item.getMaterialGrossWeight());
  321 + taskDetail.setMaterialNetWeight(item.getMaterialNetWeight());
  322 + taskDetail.setMaterialTareWeight(item.getMaterialTareWeight());
  323 + taskDetail.setMaterialBatch(item.getMaterialBatch());
  324 + if(StringUtils.isNotEmpty(task.getToLocation() )) {
  325 + taskDetail.setToLocation(task.getToLocation());
  326 + }
  327 + if(StringUtils.isNotEmpty(item.getSn() )){
  328 + taskDetail.setSn(item.getSn());
  329 + }
  330 + taskDetail.setBatch(item.getBatch());
  331 + taskDetail.setProjectNo(item.getProjectNo());
  332 + taskDetail.setBatteryQty(item.getBatteryQty());
  333 + taskDetail.setBatteryPackType(item.getBatteryPackType());
  334 + taskDetail.setBatteryTypes(item.getBatteryTypes());
  335 + taskDetail.setCompleteness(item.getCompleteness());
  336 + taskDetail.setRemark(item.getRemark());
  337 + taskDetail.setCountryCode(item.getCountryCode());
  338 + taskDetail.setRecycler(item.getRecycler());
  339 + /* System.out.println("id=="+item.getId());
  340 + System.out.println("taskDetail.getMaterialIsBattery()=="+taskDetail.getMaterialIsBattery());
  341 + System.out.println("taskDetail.getBatteryTypes()=="+taskDetail.getBatteryTypes());*/
  342 + if(taskDetail.getMaterialIsBattery()==1&&StringUtils.isNotEmpty(taskDetail.getBatteryTypes())&&taskDetail.getBatteryTypes().equals("1")){
  343 + taskDetail.setDischargeReview(2);
  344 + isBatteryFlag=2;
  345 + }else{
  346 + taskDetail.setDischargeReview(1);
  347 + }
  348 + taskDetail.setPoundCode(item.getPoundCode());
  349 + taskDetail.setSupplierCode(item.getSupplierCode());
  350 + return taskDetail;
  351 + }
  352 +
318 353 public WcsTask createWcsTask(TaskHeader task){
319 354 WcsTask wcsTask=new WcsTask();
320 355 wcsTask.setTaskNo(task.getId().toString());
... ...