diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java index a0659450..e534cb69 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java @@ -70,6 +70,10 @@ public class SyncReceiptProcessHandler implements ClassProcess { } handleBillEntity(pmFormData.getForm_type(), formData); String json = formData.toJSONString(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(PmFormData::getId, pmFormData.getId()); + updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now()); + updateWrapper.set(PmFormData::getErp_data, json); try { IdentifyInfo identifyInfo = new IdentifyInfo(); BeanUtils.copyProperties(erpSec, identifyInfo); @@ -90,21 +94,15 @@ public class SyncReceiptProcessHandler implements ClassProcess { .map(error -> ((JSONObject) error).getString("Message")) .collect(Collectors.joining("; ")); } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PmFormData::getId, pmFormData.getId()); - updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now()); if (isSuccess) { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")); updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString()); - Log.error("回传Erp数据为:" + json + ",传输数据为:"); } else { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停")); updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + errorMessages + ",回传Erp数据为:" + json); - Log.error("回传Erp数据为:" + json + ",传输数据为:"); } iPmFormDataService.update(updateWrapper); } catch (Exception ex) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PmFormData::getId, pmFormData.getId()); updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + ex.getMessage() + ",回传Erp数据为:" + json); iPmFormDataService.update(updateWrapper); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java index c9181792..17737eb0 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java @@ -3,15 +3,18 @@ package org.nl.wms.pm_manage.form_data.controller; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.commons.lang3.ObjectUtils; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.domain.entity.PageQuery; +import org.nl.common.enums.StatusEnum; import org.nl.common.utils.SecurityUtils; -import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; 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.dto.FormDataQuery; @@ -22,6 +25,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; /** *

@@ -69,10 +74,30 @@ public class PmFormDataController { } @GetMapping("/getSonFormData/{id}") - public ResponseEntity getSonDtlFormData(@PathVariable String id){ + public ResponseEntity getSonDtlFormData(@PathVariable String id) { //参数判读,参数解析,调用参数入库 //Page page = iBmFormStrucService.page(pageQuery.build(), query.build()); - return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id),HttpStatus.OK); + return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id), HttpStatus.OK); + } + + + @PostMapping("/confirmStatus") + @SaIgnore + @Log("单据完成") + @Transactional(rollbackFor = Exception.class) + public ResponseEntity confirmStatus(@RequestBody JSONObject form) { + JSONArray data = form.getJSONArray("data"); + if (!ObjectUtils.isEmpty(data)) { + Set ids = data.stream() + .map(item -> (String) item) + .collect(Collectors.toSet()); + iPmFormDataService.update( + new LambdaUpdateWrapper() + .set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")) + .in(PmFormData::getId, ids) + ); + } + return new ResponseEntity<>(HttpStatus.OK); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java index eb7ef578..b1b9905f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java @@ -3,9 +3,9 @@ package org.nl.wms.pm_manage.form_data.service.dao; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import org.nl.common.domain.mybatis.handler.FastjsonSortTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; +import org.nl.common.domain.mybatis.handler.FastjsonSortTypeHandler; import org.nl.common.enums.StatusEnum; import java.io.Serializable; @@ -351,4 +351,11 @@ public class PmFormData implements Serializable { private String taxPrice; + /** + * 自定义表单字段 + */ + @TableField(typeHandler = FastjsonSortTypeHandler.class) + private JSONObject erp_data = new JSONObject(); + + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml index ab98baa5..7ac7b1e7 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml @@ -112,16 +112,19 @@ md_me_materialbase.single_weight FROM pm_form_data - left join md_me_materialbase on pm_form_data.material_id = md_me_materialbase.material_id + left join md_me_materialbase on pm_form_data.material_id = md_me_materialbase.material_id - and form_data LIKE '%${query.search}%' + and form_data LIKE '%${query.search}%' and form_type = #{query.form_type} + + and pcsn = #{query.pcsn} + - and code = #{query.code} + and code LIKE '%${query.code}' and md_me_materialbase.material_code like '%${query.mater}%' @@ -142,7 +145,7 @@ and parent_id = #{query.parent_id} - + and JSON_CONTAINS(form_data, '{"${key}":"${value}"}') diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java index 08dc9f26..930ccbd9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dto/FormDataQuery.java @@ -19,6 +19,7 @@ public class FormDataQuery extends BaseQuery { private String bill_code; private String site_code; private String search; + private String pcsn; private String parent_id; private String mater; private String[] status; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 77d463e9..45a326fa 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -113,13 +113,15 @@ public class PmFormDataServiceImpl extends ServiceImpl 30) { throw new BadRequestException("该单据状态为已完成,无需再次回传!"); } - JSONObject formData = pmFormData.getForm_data(); + PmFormData data = iPmFormDataService.getById(pmFormData.getId()); + JSONObject formData = data.getErp_data(); //要回传的json数据 String formid = formData.getString("formid"); if (StringUtils.isEmpty(formid)) { @@ -275,7 +277,9 @@ public class PmFormDataServiceImpl extends ServiceImpl list = iSyncFormMappingService.list(new LambdaQueryWrapper().eq(SyncFormMapping::getForm_type, query.getForm_type())); JSONArray mappingJson = list.get(0).getMapping_json(); String mappingString = JSON.toJSONString(mappingJson); - syncErpBillsScheduleService.syncData(mappingString, list.get(0).getForm_type(), list.get(0).getDtl_split(), query.getCode()); + syncErpBillsScheduleService.syncData(mappingString, list.get(0).getForm_type(), list.get(0).getDtl_split(), query.getCode(),true); + //一张单据会多次更新或新增明细,明细物料出库一次不能直接标记为完成,取消完成状态筛选 + query.setStatus(null); List pmFormData = this.baseMapper.queryTree2(query); if (ObjectUtil.isNotEmpty(pmFormData)) { handleFormDatas(pmFormData); @@ -321,23 +325,25 @@ public class PmFormDataServiceImpl extends ServiceImpl pmFormDataDtos) { List parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList()); List childs = this.baseMapper.selectChilds(parents); - //过滤非料箱与托盘库 - String stockId = ""; - if (pmFormDataDtos.get(0).getCode().contains("PPBOM")) { - stockId = "stock_Id"; - } else if (pmFormDataDtos.get(0).getCode().contains("JDSCLLSQ")) { - stockId = "stockId"; - } else if (pmFormDataDtos.get(0).getCode().contains("ZJDB")) { - stockId = "SrcStockId_Id"; - } - if (StringUtils.isNotBlank(stockId)) { - String finalStockId = stockId; - childs.removeIf(r -> - !new HashSet<>(Arrays.asList("1233925", "1233926")) - .contains(r.getForm_data().getString(finalStockId)) - ); - } if (!CollectionUtils.isEmpty(childs)) { + if (StringUtils.isNotBlank(pmFormDataDtos.get(0).getCode())) { + //过滤非料箱与托盘库 + String stockId = ""; + if (pmFormDataDtos.get(0).getCode().contains("PPBOM")) { + stockId = "stock_Id"; + } else if (pmFormDataDtos.get(0).getCode().contains("JDSCLLSQ")) { + stockId = "stockId"; + } else if (pmFormDataDtos.get(0).getCode().contains("ZJDB")) { + stockId = "SrcStockId_Id"; + } + if (StringUtils.isNotBlank(stockId)) { + String finalStockId = stockId; + childs.removeIf(r -> + !new HashSet<>(Arrays.asList("1233925", "1233926")) + .contains(r.getForm_data().getString(finalStockId)) + ); + } + } Map> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id)); for (PmFormDataDto dataDto : pmFormDataDtos) { String productArea = dataDto.getForm_data().getString("product_area"); @@ -358,7 +364,7 @@ public class PmFormDataServiceImpl extends ServiceImpl pmFormDataDtos = this.baseMapper.queryTree2(query); if (CollectionUtils.isEmpty(pmFormDataDtos)) { throw new BadRequestException(code + "单据编码不存在或已经完成入库"); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java index 071c5fcc..6eeec781 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java @@ -112,17 +112,15 @@ public class SyncErpBillsScheduleService { for (SyncFormMapping m : list) { JSONArray mappingJson = m.getMapping_json(); String mappingString = JSON.toJSONString(mappingJson); - syncData(mappingString, m.getForm_type(), m.getDtl_split(), ""); + syncData(mappingString, m.getForm_type(), m.getDtl_split(), "", false); } } finally { LuceneAppender.traceIdTL.remove(); } } - /** - * 自动同步 - */ - public void syncData(String mappingJson, String formType, Boolean dtlSplit, String billCode) { + + public void syncData(String mappingJson, String formType, Boolean dtlSplit, String billCode, Boolean isManual) { boolean islock = lock.tryLock(); try { if (islock) { @@ -136,18 +134,22 @@ public class SyncErpBillsScheduleService { String sevenDaysAgo = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); String filterString; if (StringUtils.isNotBlank(billCode)) { - filterString = "FBillNo = '" + billCode + "'"; + filterString = "FBillNo like '%" + billCode + "'"; } else { filterString = getFilterString(formType, "", sevenDaysAgo, today); } query.setFilterString(filterString); query.setFormId(formType); query.setFieldKeys("FID"); - query.setLimit(0); + if (isManual) { + query.setLimit(1); + } else { + query.setLimit(0); + } result = erpServiceUtils.queryBills(query); if (ObjectUtils.isNotEmpty(result)) { K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); - handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); + handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi, isManual); } } } catch (Exception ex) { @@ -198,11 +200,11 @@ public class SyncErpBillsScheduleService { query.setFilterString(filterString); query.setFormId(formType); query.setFieldKeys("FID"); - query.setLimit(0); + query.setLimit(10); result = erpServiceUtils.queryBills(query); if (ObjectUtils.isNotEmpty(result)) { K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); - handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); + handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi, true); } if (!CollectionUtils.isEmpty(errorMsg)) { throw new BadRequestException("同步成功" + (result.size() - errorMsg.size()) + "条,失败信息:" + errorMsg.toString()); @@ -224,7 +226,7 @@ public class SyncErpBillsScheduleService { private static String getFilterString(String formType, String code, String timeStart, String timeEnd) { String filterString; if (StringUtils.isNotBlank(code)) { - filterString = "FBillNo = '" + code + "'"; + filterString = "FBillNo like '%" + code + "'"; } else { filterString = BILL_ORG_MAPPING.get(formType) + " = '750572' "; if ("ka7c19edf9d4b4b39b8cc4a06802163b0".equals(formType)) { @@ -241,7 +243,7 @@ public class SyncErpBillsScheduleService { return filterString; } - private void handleBills(String mappingJson, String formType, Boolean dtlSplit, Map errorMsg, JSONArray result, K3CloudApi cloudApi) { + private void handleBills(String mappingJson, String formType, Boolean dtlSplit, Map errorMsg, JSONArray result, K3CloudApi cloudApi, Boolean isManual) { //物料同步 SyncFormMapping syncFormMapping = syncFormMappingServiceImpl.getOne(new LambdaQueryWrapper().in(SyncFormMapping::getForm_type, "BD_MATERIAL")); String materialMappingString = JSON.toJSONString(syncFormMapping.getMapping_json()); @@ -296,11 +298,11 @@ public class SyncErpBillsScheduleService { for (PmFormData f : mainBill) { //存在ID,主单据不新增不修改,修改未出库单据的明细 String id = f.getId() + "$" + f.getForm_type(); - if (exitFormDataList.contains(id)) { + //实时扫描则同步修改未出库的用料清单单据 + if (exitFormDataList.contains(id) && isManual) { //单据明细 if (StringUtils.isBlank(f.getCode())) { PmFormData existDtlData = formDataService.getOne(new QueryWrapper().eq("id", id).select("qty")); - //同步修改未出库单据 //existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0||f.getPlan_qty().compareTo(f.getAssign_qty()) > 0 if (existDtlData.getQty() != null) { if (existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0) { diff --git a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/formData.js b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/formData.js index e0db746c..51f557e7 100644 --- a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/formData.js +++ b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/formData.js @@ -60,4 +60,12 @@ export function getSonFormData(id) { }) } -export default { add, edit, del, getFormType, getParentFormTypes, getParentFormTypesByDesc, getSonFormData, syncFeedBack } +export function confirm(data) { + return request({ + url: '/api/pmFormData/confirmStatus', + method: 'post', + data + }) +} + +export default { add, edit, del, getFormType, getParentFormTypes, getParentFormTypesByDesc, getSonFormData, syncFeedBack, confirm } diff --git a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue index dd0aacd8..d43df26d 100644 --- a/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue +++ b/wms_pro/qd/src/views/wms/pm_manage/feedback_data/index.vue @@ -56,6 +56,16 @@ class="filter-item" /> + + + 手动回传 + + 处理完成 + - + @@ -154,7 +175,12 @@ @selection-change="handleDtlCurrentChange" > - + - + - - - - - - - - + + + + + + + + + - - + + 1) { + this.crud.notify('请确认只选择一行单据', CRUD.NOTIFICATION_TYPE.INFO) + return + } + const param = {} + param.data = this.currentRow + crudFormData.syncFeedBack(param) .then(res => { - debugger this.crud.notify(res) // 使用后端返回的消息 }) .catch(error => { @@ -373,12 +419,21 @@ export default { }) }, handleDtlCurrentChange(val) { - console.log(val) - if (val.length == 1) { - this.currentRow = val[0] - } else { - this.currentRow = null + this.currentRow = val + }, confirm() { + if (this.currentRow.length === 0) { + this.crud.notify('请选择一行单据', CRUD.NOTIFICATION_TYPE.INFO) + return } + const ids = this.currentRow.map(row => row.id) + // 构造参数 + const param = { + data: ids // 将提取的 id 数组赋值给 param.data + } + crudFormData.confirm(param).then(res => { + this.crud.notify('单据处理成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) } } }