opt:1.优化单据回传查询;2.优化用料单实时查询,实时更新;
3.优化失败单据回传字段序列化顺序混乱; 4.手动同步数量限制,模糊搜索;
This commit is contained in:
@@ -70,6 +70,10 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
}
|
}
|
||||||
handleBillEntity(pmFormData.getForm_type(), formData);
|
handleBillEntity(pmFormData.getForm_type(), formData);
|
||||||
String json = formData.toJSONString();
|
String json = formData.toJSONString();
|
||||||
|
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
||||||
|
updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now());
|
||||||
|
updateWrapper.set(PmFormData::getErp_data, json);
|
||||||
try {
|
try {
|
||||||
IdentifyInfo identifyInfo = new IdentifyInfo();
|
IdentifyInfo identifyInfo = new IdentifyInfo();
|
||||||
BeanUtils.copyProperties(erpSec, identifyInfo);
|
BeanUtils.copyProperties(erpSec, identifyInfo);
|
||||||
@@ -90,21 +94,15 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
.map(error -> ((JSONObject) error).getString("Message"))
|
.map(error -> ((JSONObject) error).getString("Message"))
|
||||||
.collect(Collectors.joining("; "));
|
.collect(Collectors.joining("; "));
|
||||||
}
|
}
|
||||||
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
|
||||||
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
|
||||||
updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now());
|
|
||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"));
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"));
|
||||||
updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString());
|
updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString());
|
||||||
Log.error("回传Erp数据为:" + json + ",传输数据为:");
|
|
||||||
} else {
|
} else {
|
||||||
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停"));
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停"));
|
||||||
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + errorMessages + ",回传Erp数据为:" + json);
|
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + errorMessages + ",回传Erp数据为:" + json);
|
||||||
Log.error("回传Erp数据为:" + json + ",传输数据为:");
|
|
||||||
}
|
}
|
||||||
iPmFormDataService.update(updateWrapper);
|
iPmFormDataService.update(updateWrapper);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
|
||||||
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
||||||
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + ex.getMessage() + ",回传Erp数据为:" + json);
|
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + ex.getMessage() + ",回传Erp数据为:" + json);
|
||||||
iPmFormDataService.update(updateWrapper);
|
iPmFormDataService.update(updateWrapper);
|
||||||
|
|||||||
@@ -3,15 +3,18 @@ package org.nl.wms.pm_manage.form_data.controller;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alibaba.fastjson.parser.Feature;
|
import com.alibaba.fastjson.parser.Feature;
|
||||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.TableDataInfo;
|
||||||
import org.nl.common.anno.Log;
|
import org.nl.common.anno.Log;
|
||||||
import org.nl.common.domain.entity.PageQuery;
|
import org.nl.common.domain.entity.PageQuery;
|
||||||
|
import org.nl.common.enums.StatusEnum;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
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.IPmFormDataService;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||||
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
|
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 org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -69,10 +74,30 @@ public class PmFormDataController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getSonFormData/{id}")
|
@GetMapping("/getSonFormData/{id}")
|
||||||
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
|
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id) {
|
||||||
//参数判读,参数解析,调用参数入库
|
//参数判读,参数解析,调用参数入库
|
||||||
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
|
//Page<BmFormStruc> 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<Object> confirmStatus(@RequestBody JSONObject form) {
|
||||||
|
JSONArray data = form.getJSONArray("data");
|
||||||
|
if (!ObjectUtils.isEmpty(data)) {
|
||||||
|
Set<String> ids = data.stream()
|
||||||
|
.map(item -> (String) item)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
iPmFormDataService.update(
|
||||||
|
new LambdaUpdateWrapper<PmFormData>()
|
||||||
|
.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"))
|
||||||
|
.in(PmFormData::getId, ids)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package org.nl.wms.pm_manage.form_data.service.dao;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import org.nl.common.domain.mybatis.handler.FastjsonSortTypeHandler;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.nl.common.domain.mybatis.handler.FastjsonSortTypeHandler;
|
||||||
import org.nl.common.enums.StatusEnum;
|
import org.nl.common.enums.StatusEnum;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@@ -351,4 +351,11 @@ public class PmFormData implements Serializable {
|
|||||||
private String taxPrice;
|
private String taxPrice;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义表单字段
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = FastjsonSortTypeHandler.class)
|
||||||
|
private JSONObject erp_data = new JSONObject();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,16 +112,19 @@
|
|||||||
md_me_materialbase.single_weight
|
md_me_materialbase.single_weight
|
||||||
FROM
|
FROM
|
||||||
pm_form_data
|
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
|
||||||
<where>
|
<where>
|
||||||
<if test="query.search != null and query.search != ''">
|
<if test="query.search != null and query.search != ''">
|
||||||
and form_data LIKE '%${query.search}%'
|
and form_data LIKE '%${query.search}%'
|
||||||
</if>
|
</if>
|
||||||
<if test="query.form_type != null and query.form_type != ''">
|
<if test="query.form_type != null and query.form_type != ''">
|
||||||
and form_type = #{query.form_type}
|
and form_type = #{query.form_type}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="query.pcsn != null and query.pcsn != ''">
|
||||||
|
and pcsn = #{query.pcsn}
|
||||||
|
</if>
|
||||||
<if test="query.code != null and query.code != ''">
|
<if test="query.code != null and query.code != ''">
|
||||||
and code = #{query.code}
|
and code LIKE '%${query.code}'
|
||||||
</if>
|
</if>
|
||||||
<if test="query.mater != null and query.mater != ''">
|
<if test="query.mater != null and query.mater != ''">
|
||||||
and md_me_materialbase.material_code like '%${query.mater}%'
|
and md_me_materialbase.material_code like '%${query.mater}%'
|
||||||
@@ -142,7 +145,7 @@
|
|||||||
and parent_id = #{query.parent_id}
|
and parent_id = #{query.parent_id}
|
||||||
</if>
|
</if>
|
||||||
<if test="query.form_query != null and query.form_query.size() > 0">
|
<if test="query.form_query != null and query.form_query.size() > 0">
|
||||||
<foreach collection="query.form_query" item="value" index="key" >
|
<foreach collection="query.form_query" item="value" index="key">
|
||||||
<if test="value != null and value != ''">
|
<if test="value != null and value != ''">
|
||||||
and JSON_CONTAINS(form_data, '{"${key}":"${value}"}')
|
and JSON_CONTAINS(form_data, '{"${key}":"${value}"}')
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class FormDataQuery extends BaseQuery<PmFormData> {
|
|||||||
private String bill_code;
|
private String bill_code;
|
||||||
private String site_code;
|
private String site_code;
|
||||||
private String search;
|
private String search;
|
||||||
|
private String pcsn;
|
||||||
private String parent_id;
|
private String parent_id;
|
||||||
private String mater;
|
private String mater;
|
||||||
private String[] status;
|
private String[] status;
|
||||||
|
|||||||
@@ -113,13 +113,15 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
* 手动推送回执单据
|
* 手动推送回执单据
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String syncFeedBack(JSONObject jsonData) {
|
public String syncFeedBack(JSONObject form) {
|
||||||
//执行回传单
|
//执行回传单
|
||||||
PmFormData pmFormData = jsonData.toJavaObject(PmFormData.class);
|
JSONArray jsonData = form.getJSONArray("data");
|
||||||
|
PmFormData pmFormData = jsonData.getObject(0, PmFormData.class);
|
||||||
if (Integer.parseInt(pmFormData.getStatus()) > 30) {
|
if (Integer.parseInt(pmFormData.getStatus()) > 30) {
|
||||||
throw new BadRequestException("该单据状态为已完成,无需再次回传!");
|
throw new BadRequestException("该单据状态为已完成,无需再次回传!");
|
||||||
}
|
}
|
||||||
JSONObject formData = pmFormData.getForm_data();
|
PmFormData data = iPmFormDataService.getById(pmFormData.getId());
|
||||||
|
JSONObject formData = data.getErp_data();
|
||||||
//要回传的json数据
|
//要回传的json数据
|
||||||
String formid = formData.getString("formid");
|
String formid = formData.getString("formid");
|
||||||
if (StringUtils.isEmpty(formid)) {
|
if (StringUtils.isEmpty(formid)) {
|
||||||
@@ -275,7 +277,9 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
List<SyncFormMapping> list = iSyncFormMappingService.list(new LambdaQueryWrapper<SyncFormMapping>().eq(SyncFormMapping::getForm_type, query.getForm_type()));
|
List<SyncFormMapping> list = iSyncFormMappingService.list(new LambdaQueryWrapper<SyncFormMapping>().eq(SyncFormMapping::getForm_type, query.getForm_type()));
|
||||||
JSONArray mappingJson = list.get(0).getMapping_json();
|
JSONArray mappingJson = list.get(0).getMapping_json();
|
||||||
String mappingString = JSON.toJSONString(mappingJson);
|
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<PmFormDataDto> pmFormData = this.baseMapper.queryTree2(query);
|
List<PmFormDataDto> pmFormData = this.baseMapper.queryTree2(query);
|
||||||
if (ObjectUtil.isNotEmpty(pmFormData)) {
|
if (ObjectUtil.isNotEmpty(pmFormData)) {
|
||||||
handleFormDatas(pmFormData);
|
handleFormDatas(pmFormData);
|
||||||
@@ -321,23 +325,25 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
private void handleFormDatas(List<PmFormDataDto> pmFormDataDtos) {
|
private void handleFormDatas(List<PmFormDataDto> pmFormDataDtos) {
|
||||||
List<String> parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList());
|
List<String> parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList());
|
||||||
List<PmFormDataDto> childs = this.baseMapper.selectChilds(parents);
|
List<PmFormDataDto> 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 (!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<String, List<PmFormDataDto>> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id));
|
Map<String, List<PmFormDataDto>> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id));
|
||||||
for (PmFormDataDto dataDto : pmFormDataDtos) {
|
for (PmFormDataDto dataDto : pmFormDataDtos) {
|
||||||
String productArea = dataDto.getForm_data().getString("product_area");
|
String productArea = dataDto.getForm_data().getString("product_area");
|
||||||
@@ -358,7 +364,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
public PmFormDataDto queryErpCode(String code, String stor_code) {
|
public PmFormDataDto queryErpCode(String code, String stor_code) {
|
||||||
FormDataQuery query = new FormDataQuery();
|
FormDataQuery query = new FormDataQuery();
|
||||||
query.setCode(code);
|
query.setCode(code);
|
||||||
query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"), StatusEnum.FORM_STATUS.code("执行中")});
|
// query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"), StatusEnum.FORM_STATUS.code("执行中")});
|
||||||
List<PmFormDataDto> pmFormDataDtos = this.baseMapper.queryTree2(query);
|
List<PmFormDataDto> pmFormDataDtos = this.baseMapper.queryTree2(query);
|
||||||
if (CollectionUtils.isEmpty(pmFormDataDtos)) {
|
if (CollectionUtils.isEmpty(pmFormDataDtos)) {
|
||||||
throw new BadRequestException(code + "单据编码不存在或已经完成入库");
|
throw new BadRequestException(code + "单据编码不存在或已经完成入库");
|
||||||
|
|||||||
@@ -112,17 +112,15 @@ public class SyncErpBillsScheduleService {
|
|||||||
for (SyncFormMapping m : list) {
|
for (SyncFormMapping m : list) {
|
||||||
JSONArray mappingJson = m.getMapping_json();
|
JSONArray mappingJson = m.getMapping_json();
|
||||||
String mappingString = JSON.toJSONString(mappingJson);
|
String mappingString = JSON.toJSONString(mappingJson);
|
||||||
syncData(mappingString, m.getForm_type(), m.getDtl_split(), "");
|
syncData(mappingString, m.getForm_type(), m.getDtl_split(), "", false);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
LuceneAppender.traceIdTL.remove();
|
LuceneAppender.traceIdTL.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 自动同步
|
public void syncData(String mappingJson, String formType, Boolean dtlSplit, String billCode, Boolean isManual) {
|
||||||
*/
|
|
||||||
public void syncData(String mappingJson, String formType, Boolean dtlSplit, String billCode) {
|
|
||||||
boolean islock = lock.tryLock();
|
boolean islock = lock.tryLock();
|
||||||
try {
|
try {
|
||||||
if (islock) {
|
if (islock) {
|
||||||
@@ -136,18 +134,22 @@ public class SyncErpBillsScheduleService {
|
|||||||
String sevenDaysAgo = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
|
String sevenDaysAgo = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
|
||||||
String filterString;
|
String filterString;
|
||||||
if (StringUtils.isNotBlank(billCode)) {
|
if (StringUtils.isNotBlank(billCode)) {
|
||||||
filterString = "FBillNo = '" + billCode + "'";
|
filterString = "FBillNo like '%" + billCode + "'";
|
||||||
} else {
|
} else {
|
||||||
filterString = getFilterString(formType, "", sevenDaysAgo, today);
|
filterString = getFilterString(formType, "", sevenDaysAgo, today);
|
||||||
}
|
}
|
||||||
query.setFilterString(filterString);
|
query.setFilterString(filterString);
|
||||||
query.setFormId(formType);
|
query.setFormId(formType);
|
||||||
query.setFieldKeys("FID");
|
query.setFieldKeys("FID");
|
||||||
query.setLimit(0);
|
if (isManual) {
|
||||||
|
query.setLimit(1);
|
||||||
|
} else {
|
||||||
|
query.setLimit(0);
|
||||||
|
}
|
||||||
result = erpServiceUtils.queryBills(query);
|
result = erpServiceUtils.queryBills(query);
|
||||||
if (ObjectUtils.isNotEmpty(result)) {
|
if (ObjectUtils.isNotEmpty(result)) {
|
||||||
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
|
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
|
||||||
handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi);
|
handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi, isManual);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
@@ -198,11 +200,11 @@ public class SyncErpBillsScheduleService {
|
|||||||
query.setFilterString(filterString);
|
query.setFilterString(filterString);
|
||||||
query.setFormId(formType);
|
query.setFormId(formType);
|
||||||
query.setFieldKeys("FID");
|
query.setFieldKeys("FID");
|
||||||
query.setLimit(0);
|
query.setLimit(10);
|
||||||
result = erpServiceUtils.queryBills(query);
|
result = erpServiceUtils.queryBills(query);
|
||||||
if (ObjectUtils.isNotEmpty(result)) {
|
if (ObjectUtils.isNotEmpty(result)) {
|
||||||
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
|
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
|
||||||
handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi);
|
handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi, true);
|
||||||
}
|
}
|
||||||
if (!CollectionUtils.isEmpty(errorMsg)) {
|
if (!CollectionUtils.isEmpty(errorMsg)) {
|
||||||
throw new BadRequestException("同步成功" + (result.size() - errorMsg.size()) + "条,失败信息:" + errorMsg.toString());
|
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) {
|
private static String getFilterString(String formType, String code, String timeStart, String timeEnd) {
|
||||||
String filterString;
|
String filterString;
|
||||||
if (StringUtils.isNotBlank(code)) {
|
if (StringUtils.isNotBlank(code)) {
|
||||||
filterString = "FBillNo = '" + code + "'";
|
filterString = "FBillNo like '%" + code + "'";
|
||||||
} else {
|
} else {
|
||||||
filterString = BILL_ORG_MAPPING.get(formType) + " = '750572' ";
|
filterString = BILL_ORG_MAPPING.get(formType) + " = '750572' ";
|
||||||
if ("ka7c19edf9d4b4b39b8cc4a06802163b0".equals(formType)) {
|
if ("ka7c19edf9d4b4b39b8cc4a06802163b0".equals(formType)) {
|
||||||
@@ -241,7 +243,7 @@ public class SyncErpBillsScheduleService {
|
|||||||
return filterString;
|
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<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
|
SyncFormMapping syncFormMapping = syncFormMappingServiceImpl.getOne(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
|
||||||
String materialMappingString = JSON.toJSONString(syncFormMapping.getMapping_json());
|
String materialMappingString = JSON.toJSONString(syncFormMapping.getMapping_json());
|
||||||
@@ -296,11 +298,11 @@ public class SyncErpBillsScheduleService {
|
|||||||
for (PmFormData f : mainBill) {
|
for (PmFormData f : mainBill) {
|
||||||
//存在ID,主单据不新增不修改,修改未出库单据的明细
|
//存在ID,主单据不新增不修改,修改未出库单据的明细
|
||||||
String id = f.getId() + "$" + f.getForm_type();
|
String id = f.getId() + "$" + f.getForm_type();
|
||||||
if (exitFormDataList.contains(id)) {
|
//实时扫描则同步修改未出库的用料清单单据
|
||||||
|
if (exitFormDataList.contains(id) && isManual) {
|
||||||
//单据明细
|
//单据明细
|
||||||
if (StringUtils.isBlank(f.getCode())) {
|
if (StringUtils.isBlank(f.getCode())) {
|
||||||
PmFormData existDtlData = formDataService.getOne(new QueryWrapper<PmFormData>().eq("id", id).select("qty"));
|
PmFormData existDtlData = formDataService.getOne(new QueryWrapper<PmFormData>().eq("id", id).select("qty"));
|
||||||
//同步修改未出库单据
|
|
||||||
//existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0||f.getPlan_qty().compareTo(f.getAssign_qty()) > 0
|
//existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0||f.getPlan_qty().compareTo(f.getAssign_qty()) > 0
|
||||||
if (existDtlData.getQty() != null) {
|
if (existDtlData.getQty() != null) {
|
||||||
if (existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0) {
|
if (existDtlData.getQty().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
|||||||
@@ -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 }
|
||||||
|
|||||||
@@ -56,6 +56,16 @@
|
|||||||
class="filter-item"
|
class="filter-item"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="批次">
|
||||||
|
<el-input
|
||||||
|
v-model="query.pcsn"
|
||||||
|
clearable
|
||||||
|
size="mini"
|
||||||
|
placeholder="请输入批次"
|
||||||
|
prefix-icon="el-icon-search"
|
||||||
|
class="filter-item"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="单据日期" prop="analyseData">
|
<el-form-item label="单据日期" prop="analyseData">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="query.datepick"
|
v-model="query.datepick"
|
||||||
@@ -88,6 +98,17 @@
|
|||||||
>
|
>
|
||||||
手动回传
|
手动回传
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
slot="right"
|
||||||
|
class="filter-item"
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-check"
|
||||||
|
size="mini"
|
||||||
|
:disabled="!currentRow"
|
||||||
|
@click="confirm"
|
||||||
|
>
|
||||||
|
处理完成
|
||||||
|
</el-button>
|
||||||
</crudOperation>
|
</crudOperation>
|
||||||
|
|
||||||
<el-dialog
|
<el-dialog
|
||||||
@@ -124,7 +145,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="批号" prop="pcsn">
|
<el-form-item label="批次" prop="pcsn">
|
||||||
<el-input v-model="form.pcsn" style="width: 150px;" />
|
<el-input v-model="form.pcsn" style="width: 150px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -154,7 +175,12 @@
|
|||||||
@selection-change="handleDtlCurrentChange"
|
@selection-change="handleDtlCurrentChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column prop="code" label="单据编码" show-overflow-tooltip width="120">
|
<el-table-column
|
||||||
|
prop="code"
|
||||||
|
label="单据编码"
|
||||||
|
show-overflow-tooltip
|
||||||
|
:min-width="flexWidth('code',crud.data,'单据编码')"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-link v-if="scope.row.hasChildren" type="warning" @click="toView(scope.row)">{{
|
<el-link v-if="scope.row.hasChildren" type="warning" @click="toView(scope.row)">{{
|
||||||
scope.row.code
|
scope.row.code
|
||||||
@@ -171,21 +197,31 @@
|
|||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="vehicle_code" label="载具编号" show-overflow-tooltip width="120" />
|
<!-- <el-table-column prop="vehicle_code" label="载具编号" show-overflow-tooltip width="120" />-->
|
||||||
<el-table-column prop="qty" label="物料数量" show-overflow-tooltip />
|
<el-table-column prop="qty" label="物料数量" show-overflow-tooltip />
|
||||||
<el-table-column prop="material_code" label="物料编码" show-overflow-tooltip width="120" />
|
<el-table-column
|
||||||
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip width="120" />
|
prop="material_code"
|
||||||
<el-table-column prop="material_spec" label="物料规格" show-overflow-tooltip width="120" />
|
label="物料编码"
|
||||||
<el-table-column prop="pcsn" label="批次" show-overflow-tooltip width="120" />
|
show-overflow-tooltip
|
||||||
<el-table-column prop="unit_id" label="单位" show-overflow-tooltip width="120" />
|
:min-width="flexWidth('material_code',crud.data,'物料编码')"
|
||||||
<el-table-column prop="source_form_id" label="源单编码" show-overflow-tooltip width="120" />
|
/>
|
||||||
<el-table-column prop="source_form_type" label="源单类型" show-overflow-tooltip width="130" />
|
<el-table-column
|
||||||
<el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120" />
|
prop="material_name"
|
||||||
|
label="物料名称"
|
||||||
|
:min-width="flexWidth('material_name',crud.data,'物料名称')"
|
||||||
|
/>
|
||||||
|
<!-- <el-table-column prop="material_spec" label="物料规格" show-overflow-tooltip width="120" />-->
|
||||||
|
<el-table-column prop="pcsn" label="批次" show-overflow-tooltip :min-width="flexWidth('pcsn',crud.data,'批次')" />
|
||||||
|
<!-- <el-table-column prop="unit_id" label="单位" show-overflow-tooltip width="120" />-->
|
||||||
|
|
||||||
|
<!-- <el-table-column prop="parent_id" label="父单据数据id" show-overflow-tooltip width="120" />-->
|
||||||
|
<el-table-column prop="create_time" label="创建时间" width="140" />
|
||||||
|
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="210" />
|
||||||
<el-table-column label="ERP回传数据" show-overflow-tooltip width="210">
|
<el-table-column label="ERP回传数据" show-overflow-tooltip width="210">
|
||||||
<template slot-scope="scope">{{ scope.row.form_data }}</template>
|
<template slot-scope="scope">{{ scope.row.form_data }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="210" />
|
<el-table-column prop="source_form_type" label="源单类型" show-overflow-tooltip width="130" />
|
||||||
<el-table-column prop="create_time" label="创建时间" />
|
<el-table-column prop="source_form_id" label="源单编码" show-overflow-tooltip width="120" />
|
||||||
<el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120" />
|
<el-table-column prop="proc_inst_id" label="对应流程实例id" show-overflow-tooltip width="120" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-permission="['admin','Classstandard:edit','Classstandard:del']"
|
v-permission="['admin','Classstandard:edit','Classstandard:del']"
|
||||||
@@ -223,6 +259,7 @@ import pagination from '@crud/Pagination'
|
|||||||
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
|
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
|
||||||
import ViewDialog from './ViewDialog'
|
import ViewDialog from './ViewDialog'
|
||||||
import crudClassstandard from '@/views/wms/base_manage/class_standard/classstandard'
|
import crudClassstandard from '@/views/wms/base_manage/class_standard/classstandard'
|
||||||
|
import crudbucketrecord from '@/views/wms/md_manage/group_dick/groupdick'
|
||||||
// import UploadDialog from './UploadDialog'
|
// import UploadDialog from './UploadDialog'
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
@@ -362,10 +399,19 @@ export default {
|
|||||||
this.$refs.viewDialog.setForm(row)
|
this.$refs.viewDialog.setForm(row)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
syncFeedBack(row) {
|
syncFeedBack() {
|
||||||
crudFormData.syncFeedBack(JSON.stringify(this.currentRow))
|
if (this.currentRow.length === 0) {
|
||||||
|
this.crud.notify('请选择一行单据', CRUD.NOTIFICATION_TYPE.INFO)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.currentRow.length > 1) {
|
||||||
|
this.crud.notify('请确认只选择一行单据', CRUD.NOTIFICATION_TYPE.INFO)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const param = {}
|
||||||
|
param.data = this.currentRow
|
||||||
|
crudFormData.syncFeedBack(param)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
debugger
|
|
||||||
this.crud.notify(res) // 使用后端返回的消息
|
this.crud.notify(res) // 使用后端返回的消息
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
@@ -373,12 +419,21 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleDtlCurrentChange(val) {
|
handleDtlCurrentChange(val) {
|
||||||
console.log(val)
|
this.currentRow = val
|
||||||
if (val.length == 1) {
|
}, confirm() {
|
||||||
this.currentRow = val[0]
|
if (this.currentRow.length === 0) {
|
||||||
} else {
|
this.crud.notify('请选择一行单据', CRUD.NOTIFICATION_TYPE.INFO)
|
||||||
this.currentRow = null
|
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()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user