add:增加单据手动同步功能
This commit is contained in:
@@ -77,7 +77,7 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
String result = erpServiceUtils.audit(formData).getString("result");
|
String result = erpServiceUtils.audit(formData).getString("result");
|
||||||
res = JSONObject.parseObject(result);
|
res = JSONObject.parseObject(result);
|
||||||
} else {
|
} else {
|
||||||
String result = cloudApi.save(formid, formData.toJSONString());
|
String result = erpServiceUtils.save(formData).getString("result");
|
||||||
res = JSONObject.parseObject(result);
|
res = JSONObject.parseObject(result);
|
||||||
}
|
}
|
||||||
JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus");
|
JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus");
|
||||||
@@ -94,7 +94,7 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now());
|
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数据为:" + json);
|
updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString());
|
||||||
} 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);
|
||||||
@@ -110,7 +110,11 @@ public class SyncReceiptProcessHandler implements ClassProcess {
|
|||||||
return from;
|
return from;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleBillEntity(String formType, JSONObject formData) {
|
public void handleBillEntity(String formType, JSONObject formData) {
|
||||||
|
JSONObject model = formData.getJSONObject("Model");
|
||||||
|
if (model == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity");
|
JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity");
|
||||||
//判断生产入库的手工录入与MRP生成方式需回传不同的源单信息
|
//判断生产入库的手工录入与MRP生成方式需回传不同的源单信息
|
||||||
if ("RECEIPT_PRD".equals(formType)) {
|
if ("RECEIPT_PRD".equals(formType)) {
|
||||||
|
|||||||
@@ -83,5 +83,17 @@ public class PmFormDataController {
|
|||||||
iPmFormDataService.syncFormData("type", formDtl);
|
iPmFormDataService.syncFormData("type", formDtl);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping ("/syncFeedBack")
|
||||||
|
@Log("手动同步单据")
|
||||||
|
public ResponseEntity<Object> syncFeedBack(@RequestBody JSONObject fromData) {
|
||||||
|
return new ResponseEntity<>(iPmFormDataService.syncFeedBack(fromData),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public interface IPmFormDataService extends IService<PmFormData> {
|
|||||||
|
|
||||||
Integer syncFormData(String type,String dataString);
|
Integer syncFormData(String type,String dataString);
|
||||||
|
|
||||||
|
String syncFeedBack(JSONObject fromData);
|
||||||
|
|
||||||
JSONObject mappingParse(JSONArray mappingJson, BmFormStruc one, JSONObject sourceData);
|
JSONObject mappingParse(JSONArray mappingJson, BmFormStruc one, JSONObject sourceData);
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,13 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.github.javaparser.utils.Log;
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.TableDataInfo;
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.domain.constant.DictConstantPool;
|
import org.nl.common.domain.constant.DictConstantPool;
|
||||||
@@ -19,6 +22,7 @@ import org.nl.common.enums.StatusEnum;
|
|||||||
import org.nl.common.utils.*;
|
import org.nl.common.utils.*;
|
||||||
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
|
||||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||||
|
import org.nl.wms.flow_manage.flow.service.classprocessimpl.SyncReceiptProcessHandler;
|
||||||
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.dao.mapper.PmFormDataMapper;
|
import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper;
|
||||||
@@ -36,6 +40,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -64,18 +69,30 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBmFormStrucService formStrucService;
|
private IBmFormStrucService formStrucService;
|
||||||
|
@Resource
|
||||||
|
private ErpServiceUtils erpServiceUtils;
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISyncFormMappingService iSyncFormMappingService;
|
private ISyncFormMappingService iSyncFormMappingService;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private SyncReceiptProcessHandler SyncReceiptProcessHandler;
|
||||||
|
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
IPmFormDataService iPmFormDataService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IStIvtStructattrService iStIvtStructattrService;
|
private IStIvtStructattrService iStIvtStructattrService;
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private SyncErpBillsScheduleService syncErpBillsScheduleService;
|
private SyncErpBillsScheduleService syncErpBillsScheduleService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer syncFormData(String form_type, String dataString) {
|
public Integer syncFormData(String form_type, String dataString) {
|
||||||
if (StringUtils.isEmpty(form_type) || StringUtils.isEmpty(dataString)) {
|
if (StringUtils.isEmpty(form_type) || StringUtils.isEmpty(dataString)) {
|
||||||
@@ -85,20 +102,82 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
if (syncFormMapping == null) {
|
if (syncFormMapping == null) {
|
||||||
throw new BadRequestException("当前表单无同步配置信息");
|
throw new BadRequestException("当前表单无同步配置信息");
|
||||||
}
|
}
|
||||||
List<PmFormData> pmFormDatas = this.syncAnalyse(syncFormMapping.getMapping_json(),syncFormMapping.getForm_type(), syncFormMapping.getDtl_split(),dataString);
|
List<PmFormData> pmFormDatas = this.syncAnalyse(syncFormMapping.getMapping_json(), syncFormMapping.getForm_type(), syncFormMapping.getDtl_split(), dataString);
|
||||||
this.saveBatch(pmFormDatas);
|
this.saveBatch(pmFormDatas);
|
||||||
return pmFormDatas.size();
|
return pmFormDatas.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动同步单据
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String syncFeedBack(JSONObject jsonData) {
|
||||||
|
//执行回传单
|
||||||
|
PmFormData pmFormData = jsonData.toJavaObject(PmFormData.class);
|
||||||
|
if (Integer.parseInt(pmFormData.getStatus()) > 30) {
|
||||||
|
throw new BadRequestException("该单据状态为已完成,无需再次回传!");
|
||||||
|
}
|
||||||
|
JSONObject formData = pmFormData.getForm_data();
|
||||||
|
//要回传的json数据
|
||||||
|
String formid = formData.getString("formid");
|
||||||
|
if (StringUtils.isEmpty(formid)) {
|
||||||
|
throw new BadRequestException("回传失败:回传数据form_data中数据格式不是formid,data类型");
|
||||||
|
}
|
||||||
|
SyncReceiptProcessHandler.handleBillEntity(pmFormData.getForm_type(), formData);
|
||||||
|
String json = formData.toJSONString();
|
||||||
|
String message = "";
|
||||||
|
try {
|
||||||
|
JSONObject res;
|
||||||
|
if (Integer.parseInt(StatusEnum.ERP_TYPE.code(formid)) > 22) {
|
||||||
|
String result = erpServiceUtils.audit(formData).getString("result");
|
||||||
|
res = JSONObject.parseObject(result);
|
||||||
|
} else {
|
||||||
|
String result = erpServiceUtils.save(formData).getString("result");
|
||||||
|
;
|
||||||
|
res = JSONObject.parseObject(result);
|
||||||
|
}
|
||||||
|
JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus");
|
||||||
|
boolean isSuccess = responseStatus.getBooleanValue("IsSuccess");
|
||||||
|
JSONArray errors = responseStatus.getJSONArray("Errors");
|
||||||
|
if (ObjectUtils.isNotEmpty(errors)) {
|
||||||
|
message = errors.stream()
|
||||||
|
.map(error -> ((JSONObject) error).getString("Message"))
|
||||||
|
.collect(Collectors.joining("; "));
|
||||||
|
}
|
||||||
|
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
||||||
|
updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now());
|
||||||
|
if (isSuccess) {
|
||||||
|
message = responseStatus.getJSONArray("SuccessEntitys").toJSONString();
|
||||||
|
message = "回执单创建成功,回传Erp数据为:" + message;
|
||||||
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成"));
|
||||||
|
updateWrapper.set(PmFormData::getRemark, message);
|
||||||
|
} else {
|
||||||
|
message = "回执单创建失败,原因为:" + message + ",回传Erp数据为:" + json;
|
||||||
|
updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停"));
|
||||||
|
updateWrapper.set(PmFormData::getRemark, message);
|
||||||
|
}
|
||||||
|
iPmFormDataService.update(updateWrapper);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
LambdaUpdateWrapper<PmFormData> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper.eq(PmFormData::getId, pmFormData.getId());
|
||||||
|
updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + ex.getMessage() + ",回传Erp数据为:" + json);
|
||||||
|
iPmFormDataService.update(updateWrapper);
|
||||||
|
Log.error(ex.getMessage());
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<PmFormData> syncAnalyse(JSONArray mappingJson, String formType,Boolean dtlSplit,String sourceString) {
|
public List<PmFormData> syncAnalyse(JSONArray mappingJson, String formType, Boolean dtlSplit, String sourceString) {
|
||||||
List<PmFormData> result = new ArrayList<>();
|
List<PmFormData> result = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
BmFormStruc one = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type",formType));
|
BmFormStruc one = formStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("form_type", formType));
|
||||||
if (one == null) {
|
if (one == null) {
|
||||||
throw new BadRequestException("当前表单无配置信息" + formType);
|
throw new BadRequestException("当前表单无配置信息" + formType);
|
||||||
}
|
}
|
||||||
@@ -197,6 +276,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
} else {
|
} else {
|
||||||
//根据单据编号同步ERP单据
|
//根据单据编号同步ERP单据
|
||||||
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()));
|
||||||
|
if (ObjectUtils.isNotEmpty(list)) {
|
||||||
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());
|
||||||
@@ -209,6 +289,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
dtoPage.setTotal(pmFormData.size());
|
dtoPage.setTotal(pmFormData.size());
|
||||||
return dtoPage;
|
return dtoPage;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal());
|
com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal());
|
||||||
dtoPage.setRecords(pmFormDataDtos);
|
dtoPage.setRecords(pmFormDataDtos);
|
||||||
return dtoPage;
|
return dtoPage;
|
||||||
|
|||||||
@@ -457,4 +457,8 @@ public class SyncErpBillsScheduleService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user