提交 d6d1371a authored 作者: inroi's avatar inroi

对账单录入

上级 c4ea0275
package org.jeecg.modules.aspect;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.PropertyFilter;
import lombok.Data;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.jeecg.common.api.dto.LogDTO;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.ModuleType;
import org.jeecg.common.exception.*;
import org.jeecg.common.util.*;
import org.jeecg.common.util.RedisLock;
import org.jeecg.common.util.ThreadLocalConfig;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.iost.ims.entity.ImsPurchaseOrder;
import org.jeecg.modules.iost.ims.entity.Vo.ImsRequestVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
......@@ -52,39 +34,44 @@ public class NotCommitRedisLockAspect {
@Resource
private BaseCommonService baseCommonService;
@Pointcut("@annotation(org.jeecg.modules.aspect.annotation.NotCommitRedisLock)")
public void logPointCut() {
}
@Autowired
RedisLock redisLock;
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
Object result=null;
Object result = null;
Object[] args = point.getArgs();
for (Object arg : args) {
if(arg instanceof ImsRequestVo)
{
if (arg instanceof ImsRequestVo) {
ImsRequestVo request = (ImsRequestVo) arg;
System.out.println("test-----"+request);
String token = redisLock.tryLock(request.getDocType()+request.getData().get(0).get("QUEUE_ID").toString(), 1000 * 60*2);
if(token==null)
{
return Result.fail("操作失败","请勿提交相同数据!",request.getDocType());
System.out.println("test-----" + request);
if (!request.getData().get(0).containsKey("QUEUE_ID")) {
//执行方法
result = point.proceed();
continue;
}
Map<String,String> map=ThreadLocalConfig.get();
if(map==null)
{
map=new HashMap<>();
String token = redisLock.tryLock(request.getDocType() + request.getData().get(0).get("QUEUE_ID").toString(), 1000 * 60 * 2);
if (token == null) {
return Result.fail("操作失败", "请勿提交相同数据!", request.getDocType());
}
map.put("key",request.getDocType()+request.getData().get(0).get("QUEUE_ID").toString());
map.put("token",token);
Map<String, String> map = ThreadLocalConfig.get();
if (map == null) {
map = new HashMap<>();
}
map.put("key", request.getDocType() + request.getData().get(0).get("QUEUE_ID").toString());
map.put("token", token);
ThreadLocalConfig.set(map);
try{
try {
//执行方法
result = point.proceed();
}finally {
redisLock.unlock(request.getDocType()+request.getData().get(0).get("QUEUE_ID").toString(), token);
} finally {
redisLock.unlock(request.getDocType() + request.getData().get(0).get("QUEUE_ID").toString(), token);
}
}
}
......@@ -92,5 +79,4 @@ public class NotCommitRedisLockAspect {
}
}
......@@ -451,13 +451,8 @@ public class CategoryDao {
JSONObject responseStatus = null;
try {
if (result) {
/*Map<String,String> MAP=new HashMap<>();
MAP.put("FEntity","FFinishQty");*/
List<String> list = new ArrayList<>();
list.add("FEntity.FFinishQty");
String listjson = JsonUtil.Listjson(list);
//\"NeedUpDateFields\":"+listjson+",\"NeedReturnFields\":[\"FFinishQty\"],
String content = "{\"IsDeleteEntry\":false,\"IsAutoSubmitAndAudit\":true,\"Model\":" + json + "}";
//String content = "{\"IsDeleteEntry\":false,\"IsAutoSubmitAndAudit\":false,\"Model\":" + json + "}";
String content = "{\"Model\":" + json + "}";
result2 = client.save(sFormId, content);
//记录下推金蝶云数据的请求和响应信息
KingdeeLogUtil kingdeeLogUtil = new KingdeeLogUtil();
......@@ -487,7 +482,7 @@ public class CategoryDao {
message = message + "---" + String.valueOf(messags.get("Message"));
i++;
}
throw new KingdeeChangeException("修改失败!", message);
throw new KingdeeChangeException("操作失败!", message);
/* return String.valueOf(message);*/
}
return null;
......
......@@ -130,6 +130,8 @@ public class WebApi {
IImsProduceOrderCloseService iImsProduceOrderCloseService;
@Autowired
IImsProduceOrderReadyService iImsProduceOrderReadyService;
@Autowired
IDeductionFormService deductionFormService;
/**
* 传入数据到金蝶云
*
......@@ -245,6 +247,8 @@ public class WebApi {
result = iImsMaintainPickingService.setData(request.getData(), request.getDocType());
} else if (request.getDocType().equals("WMS0007")) {//产品出货
result = productOutService.setData(request.getData(), request.getDocType());
} else if (request.getDocType().equals("SUP_DEDUCTIONS")) {//扣款单
result = deductionFormService.setData(request.getData(), request.getDocType());
} else {
return Result.fail("操作失败", request.getDocType() + "不存在!", request.getDocType());
}
......
package org.jeecg.modules.iost.ims.kingdeeapi;
import org.jeecg.modules.iost.ims.Dao.CategoryDao;
import org.jeecg.modules.iost.ims.Util.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* @author Inori
*/
@Component
public class DeductionFormKingdeeApi {
@Autowired
private CategoryDao categoryDao;
private static final String FORM_ID = "AP_Payable";
private static final String KING_DEE_LOG_NAME = "扣款单";
public String addTwo(List<Map<String, Object>> lists) {
String add = null;
for (Map<String, Object> map : lists) {
Map<String, Object> stringStringMap = imsToKingDee(map);
add = categoryDao.add(KING_DEE_LOG_NAME, FORM_ID, JsonUtil.Mapjson(stringStringMap));
}
return add == null ? "添加成功!" : "";
}
public LinkedHashMap<String, Object> imsToKingDee(Map<String, Object> map) {
//转换成金蝶云格式
/* 单据头 */
LinkedHashMap<String, Object> modelMap = new LinkedHashMap<>();
//单据类型
modelMap.put("FBillTypeID", new HashMap<String, Object>() {{
put("FNumber", "YFD02_SYS");
}});
//单据编码
modelMap.put("FBillNo", map.get("SUP_DEDUCTIONS_CODE"));
//业务类型
modelMap.put("FBUSINESSTYPE", "FY");
//立账类型
modelMap.put("FSetAccountType", "3");
//备注
modelMap.put("FAP_Remark", map.get("REMARK"));
//日期
modelMap.put("FDATE", map.get("REVIEW_DATE"));
//供应商编码
modelMap.put("FSUPPLIERID", new HashMap<String, Object>() {{
put("FNumber", map.get("SUP_CODE"));
}});
/* 明细 */
List<Map<String, Object>> list = new ArrayList<>();
LinkedHashMap<String, Object> fEntityMap = new LinkedHashMap<>();
//扣款类型
fEntityMap.put("FCOSTID", new HashMap<String, Object>() {{
put("FNumber", "fy52");
}});
//计价数量
fEntityMap.put("FPriceQty", "-1");
//实际扣款金额
fEntityMap.put("FNoTaxAmountFor_D", map.get("ACTUAL_DEMONY"));
//备注
fEntityMap.put("FEntrtyMemo", map.get("APPEAL_REASON"));
list.add(fEntityMap);
modelMap.put("FEntityDetail", list);
return modelMap;
}
}
package org.jeecg.modules.iost.ims.service;
import java.util.List;
import java.util.Map;
/**
* @author Inori
*/
public interface IDeductionFormService {
String setData(List<Map<String, Object>> list, String code);
}
package org.jeecg.modules.iost.ims.service.impl;
import org.jeecg.common.util.ThreadLocalConfig;
import org.jeecg.modules.iost.ims.kingdeeapi.DeductionFormKingdeeApi;
import org.jeecg.modules.iost.ims.service.IDeductionFormService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* @author Inori
*/
@Service
public class DeductionFormServiceImpl implements IDeductionFormService {
@Autowired
private DeductionFormKingdeeApi deductionFormKingdeeApi;
@Override
public String setData(List<Map<String, Object>> list, String code) {
Map map2 = ThreadLocalConfig.get();
map2.put("KingdeeLogOZTName", "扣款单");
ThreadLocalConfig.set(map2);
return deductionFormKingdeeApi.addTwo(list);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论