diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java index d0ca1d4f..cf5c86f5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/ToPickPlatformTask.java @@ -13,6 +13,7 @@ import org.nl.common.enums.StatusEnum; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.SpringContextHolder; import org.nl.wms.dispatch_manage.point.service.ISchBasePointService; import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint; import org.nl.wms.dispatch_manage.task.handler.AbstractTask; @@ -53,7 +54,6 @@ public class ToPickPlatformTask extends AbstractTask { public JSONObject createTask(JSONObject from) { String vehicle_code = from.getString("vehicle_code"); String target_point = null;// = from.getString("target_point"); - List targetPoints = iSchBasePointService.list(new QueryWrapper() .eq("region_code", "PICK01").eq("is_used", true)); //通过全局变量获取目标位置 @@ -83,6 +83,12 @@ public class ToPickPlatformTask extends AbstractTask { if (ObjectUtils.isEmpty(struct)){ throw new BadRequestException("创建任务失败:未找到该物料对应起点仓位"); } + String start_struct_code = struct.getStruct_code(); + if (struct.getStor_code().equals("FStockId")){ + synchronized ("FStockId"){ + start_struct_code= SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct); + } + } SchBaseTask task = new SchBaseTask(); task.setId(IdUtil.getStringId()); task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); @@ -93,7 +99,7 @@ public class ToPickPlatformTask extends AbstractTask { task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setTask_type(from.getString("task_type")); task.setVehicle_code(vehicle_code); - task.setPoint_code1(struct.getStruct_code()); + task.setPoint_code1(start_struct_code); task.setPoint_code2(target_point); iSchBaseTaskService.save(task); Lask_Point = target_point; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java index 3284c1f6..25eb8cf6 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java @@ -2,21 +2,33 @@ package org.nl.wms.sync_manage.controller.form_mapping; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.kingdee.bos.webapi.sdk.K3CloudApi; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.utils.FileUtil; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase; import org.nl.wms.external_system.erp.SyncErpService; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; +import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper; import org.nl.wms.sync_manage.service.field_mapping.dto.MappingQuery; import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; import org.nl.wms.sync_manage.service.form_mapping.dto.FormMappingQuery; +import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.expression.EvaluationContext; @@ -27,9 +39,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -50,7 +61,10 @@ import java.util.List; @RequestMapping("api/syncFormMapping") @SaIgnore public class SyncFormMappingController { - + @Autowired + private SyncFormMappingServiceImpl syncFormMappingServiceImpl; + @Autowired + private PmFormDataMapper pmFormDataMapper; @Autowired private ISyncFormMappingService iSyncFormMappingService; @@ -72,7 +86,7 @@ public class SyncFormMappingController { } @GetMapping public ResponseEntity getAll(FormMappingQuery query, PageQuery page) { - return new ResponseEntity<>(TableDataInfo.build(iSyncFormMappingService.page(page.build(), query.build())), HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(iSyncFormMappingService.page(page.build(), query.build())), HttpStatus.OK); } @PostMapping("/create") @Log("创建表同步配置") @@ -101,18 +115,48 @@ public class SyncFormMappingController { public ResponseEntity syncAnalyse(@RequestBody JSONObject form){ //参数判读,参数解析,调用参数入库 Object analyseData = form.remove("analyseData"); - Object needSave = form.remove("needSave"); if (analyseData == null){ throw new BadRequestException("解析数据不能为空"); } Object mappingJson = form.get("mapping_json"); JSONArray array = JSONArray.parseArray(JSON.toJSONString(mappingJson)); List pmFormDatas = formDataService.syncAnalyse(array,form.getString("form_type"),false,(String) analyseData); - if (needSave!=null && (Boolean)needSave){ - formDataService.saveBatch(pmFormDatas); + //主单据Id + final String mainId = pmFormDatas.get(0).getId(); + Set exitFormDataList = pmFormDataMapper.existFormDataList(); + for (PmFormData f : pmFormDatas) { + //存在ID,主单据不新增不修改,修改未出库单据的明细 + String id = f.getId() + "$" + f.getForm_type(); + //实时扫描则同步修改未出库的用料清单单据 + if (exitFormDataList.contains(id) && true) { + //单据明细 + if (StringUtils.isBlank(f.getCode())) { + PmFormData existDtlData = formDataService.getOne(new QueryWrapper().eq("id", id).select("qty")); + if (existDtlData.getQty() != null) { + formDataService.update(new LambdaUpdateWrapper() + .set(PmFormData::getMaterial_id, f.getMaterial_id()) + .set(PmFormData::getUnit_id, f.getUnit_id()) + .set(PmFormData::getForm_data, JSON.toJSONString(f.getForm_data())) + .set(PmFormData::getPlan_qty, f.getPlan_qty()) + .set(PmFormData::getActual_qty, f.getActual_qty()) + .set(PmFormData::getBar_code, f.getBar_code()) + .set(PmFormData::getUpdate_name, DateUtil.now()) + .set(PmFormData::getUpdate_name, SecurityUtils.getCurrentNickName()) + .eq(PmFormData::getId, id)); + } + } + } else { + //单据明细 + if (StringUtils.isBlank(f.getCode())) { + f.setParent_id(mainId + "$" + form.getString("form_type")); + } + f.setId(id); + formDataService.save(f); + } } - return new ResponseEntity<>(TableDataInfo.build(pmFormDatas),HttpStatus.OK); + return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/syncData") @Log("表同步测试") public ResponseEntity syncData(@RequestBody JSONObject form){ @@ -151,5 +195,6 @@ public class SyncFormMappingController { -} + +}