| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.task.kingdee.handler.InboundOrderHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class InboundOrderScheduler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private InboundOrderHandler inboundOrderHandler; | 
|---|
|  |  |  | @Value("${erp.switch.InboundOrderSwitch}") | 
|---|
|  |  |  | private boolean InboundOrderSwitch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @Scheduled(cron = "0/3 * * * * ? ") | 
|---|
|  |  |  | void login(){ | 
|---|
|  |  |  | if(!InboundOrderSwitch){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inboundOrderHandler.start(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class LoginAuthenticationScheduler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LoginAuthenticationHandler loginAuthenticationHandler; | 
|---|
|  |  |  | @Value("${erp.switch.LoginAuthenticationSwitch}") | 
|---|
|  |  |  | private boolean LoginAuthenticationSwitch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //@Scheduled(cron = "0/3 * * * * ? ") | 
|---|
|  |  |  | void login(){ | 
|---|
|  |  |  | if(!LoginAuthenticationSwitch){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | loginAuthenticationHandler.start(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.asrs.task.kingdee.handler.ReviewOrderSyncHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by vincent on 2023/10/21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class ReviewOrderSyncScheduler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ReviewOrderSyncHandler reviewOrderSyncHandler; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.switch.ReviewOrderSwitch}") | 
|---|
|  |  |  | private boolean ReviewOrderSwitch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(cron = "0/3 * * * * ? ") | 
|---|
|  |  |  | @Async("orderThreadPool") | 
|---|
|  |  |  | public void completeAndReport(){ | 
|---|
|  |  |  | if(!ReviewOrderSwitch){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Order> orders = orderService.selectComplete(); | 
|---|
|  |  |  | for (Order order : orders) { | 
|---|
|  |  |  | ReturnT<String> result = reviewOrderSyncHandler.start(order); | 
|---|
|  |  |  | if (!result.isSuccess()) { | 
|---|
|  |  |  | log.error("单据[orderNo={}]向erp审核失败", order.getOrderNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by Monkey D. Luffy on 2023.10.21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class SaveOrderSyncScheduler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SubmitOrderSyncHandler submitOrderSyncHandler; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.switch.ReviewOrderSwitch}") | 
|---|
|  |  |  | private boolean ReviewOrderSwitch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @Scheduled(cron = "0/3 * * * * ? ") | 
|---|
|  |  |  | @Async("orderThreadPool") | 
|---|
|  |  |  | public void completeAndReport(){ | 
|---|
|  |  |  | if (1==1) return; | 
|---|
|  |  |  | if(!ReviewOrderSwitch){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Order> orders = orderService.selectComplete(); | 
|---|
|  |  |  | for (Order order : orders) { | 
|---|
|  |  |  | ReturnT<String> result = submitOrderSyncHandler.start(order); | 
|---|
|  |  |  | if (!result.isSuccess()) { | 
|---|
|  |  |  | log.error("单据[orderNo={}]提交至erp失败", order.getOrderNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by Monkey D. Luffy on 2023.10.21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class SubmitOrderSyncScheduler { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SaveOrderSyncHandler saveOrderSyncHandler; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.switch.ReviewOrderSwitch}") | 
|---|
|  |  |  | private boolean ReviewOrderSwitch; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @Scheduled(cron = "0/3 * * * * ? ") | 
|---|
|  |  |  | @Async("orderThreadPool") | 
|---|
|  |  |  | public void completeAndReport(){ | 
|---|
|  |  |  | if(!ReviewOrderSwitch){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Order> orders = orderService.selectComplete(); | 
|---|
|  |  |  | for (Order order : orders) { | 
|---|
|  |  |  | ReturnT<String> result = saveOrderSyncHandler.start(order); | 
|---|
|  |  |  | if (!result.isSuccess()) { | 
|---|
|  |  |  | log.error("单据[orderNo={}]保存至erp失败", order.getOrderNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.core.common.SnowflakeIdWorker; | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import com.zy.erp.kingdee.entity.param.InFormIdParam; | 
|---|
|  |  |  | import com.zy.erp.kingdee.enums.KingDeeUtilType; | 
|---|
|  |  |  | import com.zy.erp.kingdee.utils.KingDeeUtil; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | public class InboundOrderHandler extends AbstractHandler<String> { | 
|---|
|  |  |  | @Value("${erp.address.URL}") | 
|---|
|  |  |  | //端口 | 
|---|
|  |  |  | private String URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.inaddress}") | 
|---|
|  |  |  | //单据,商品档案地址 | 
|---|
|  |  |  | private String inaddress; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LoginAuthenticationHandler loginAuthenticationHandler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MatService matService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TagService tagService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SnowflakeIdWorker snowflakeIdWorker; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public synchronized ReturnT<String> start() { | 
|---|
|  |  |  | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|---|
|  |  |  | //登录金蝶 | 
|---|
|  |  |  | ReturnT<String> start = loginAuthenticationHandler.start(); | 
|---|
|  |  |  | for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) { | 
|---|
|  |  |  | InFormIdParam inFormIdParam = new InFormIdParam(); | 
|---|
|  |  |  | DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc)); | 
|---|
|  |  |  | if (Cools.isEmpty(docType) && !kingDeeUtilType.formId.equals("BD_MATERIAL")){ | 
|---|
|  |  |  | docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inFormIdParam.setFormId(kingDeeUtilType.formId); | 
|---|
|  |  |  | inFormIdParam.setLimit(100); | 
|---|
|  |  |  | inFormIdParam.setStartRow("0"); | 
|---|
|  |  |  | String FDocumentStatus=null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //条件和需要获得的结果拼接 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("FormId", inFormIdParam.getFormId()); | 
|---|
|  |  |  | jsonObject.put("Limit", inFormIdParam.getLimit()); | 
|---|
|  |  |  | jsonObject.put("StartRow", inFormIdParam.getStartRow()); | 
|---|
|  |  |  | //物料档案查询 | 
|---|
|  |  |  | if(kingDeeUtilType.formId.equals("BD_MATERIAL")){ | 
|---|
|  |  |  | Tag tag = tagService.selectByName("全部", 1); | 
|---|
|  |  |  | //物料状态 FUseOrgId .FNumber | 
|---|
|  |  |  | FDocumentStatus="C"; | 
|---|
|  |  |  | jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(tag.getUpdateTime())+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='100'"); | 
|---|
|  |  |  | jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus"); | 
|---|
|  |  |  | // FName : 物料名称 ; | 
|---|
|  |  |  | // FNumber :物料编号; | 
|---|
|  |  |  | // FCreateDate :物料创建时间; | 
|---|
|  |  |  | // FSpecification :物料规格; | 
|---|
|  |  |  | // FDocumentStatus :物料状态 | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //获取最新时间 | 
|---|
|  |  |  | //单据状态 | 
|---|
|  |  |  | FDocumentStatus="B"; | 
|---|
|  |  |  | jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"'"+" and FStockId.Fname='立库'"+" and FDocumentStatus='"+FDocumentStatus+"'"); | 
|---|
|  |  |  | jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+kingDeeUtilType.anfme+",FDocumentStatus"); | 
|---|
|  |  |  | // FBillNo :单据编号; | 
|---|
|  |  |  | // FCreateDate :单据创建时间; | 
|---|
|  |  |  | // FMaterialId.FNumber : 物料编码; | 
|---|
|  |  |  | // FMaterialName :物料名称; | 
|---|
|  |  |  | // FMaterialId.FSpecification:物料规格 | 
|---|
|  |  |  | // anfme : 物料数量 | 
|---|
|  |  |  | // FDocumentStatus :单据状态; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JSONObject jsonObject1 = new JSONObject(); | 
|---|
|  |  |  | jsonObject1.put("data", jsonObject); | 
|---|
|  |  |  | String add = jsonObject1.toJSONString(); | 
|---|
|  |  |  | //上报 | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //获取Cookie值 | 
|---|
|  |  |  | HashMap<String, Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("Cookie", start.getContent()); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(inaddress) | 
|---|
|  |  |  | .setJson(add) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONArray data = JSON.parseArray(response); | 
|---|
|  |  |  | if(data.size()<=0)  continue; | 
|---|
|  |  |  | if (data.getJSONArray(0).get(0).toString().length()>=20) continue; | 
|---|
|  |  |  | if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {//物料档案 | 
|---|
|  |  |  | Tag tag = tagService.selectByName("全部", 1); | 
|---|
|  |  |  | for (int j = 0; j < data.size(); j++) { | 
|---|
|  |  |  | JSONArray jsonArray = data.getJSONArray(j); | 
|---|
|  |  |  | //对美国时间进行转换 | 
|---|
|  |  |  | Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString()); | 
|---|
|  |  |  | //生成商品档案 | 
|---|
|  |  |  | //商品编号 | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(jsonArray.get(1).toString()); | 
|---|
|  |  |  | if (mat == null) { | 
|---|
|  |  |  | mat = new Mat(); | 
|---|
|  |  |  | mat.setMatnr(jsonArray.get(1).toString()); | 
|---|
|  |  |  | mat.setMaktx(jsonArray.get(0).toString()); | 
|---|
|  |  |  | mat.setSpecs(jsonArray.get(3).toString());//规格 | 
|---|
|  |  |  | mat.setTagId(tag.getId()); | 
|---|
|  |  |  | mat.setCreateTime(jsonDate);//商品创建时间 | 
|---|
|  |  |  | mat.setUpdateTime(new Date()); | 
|---|
|  |  |  | mat.setStatus(1); | 
|---|
|  |  |  | //最新抓取商品时间 | 
|---|
|  |  |  | if (!matService.insert(mat)) { | 
|---|
|  |  |  | //                                throw new CoolException("服务器内部错误,请联系管理员"); | 
|---|
|  |  |  | callApiLogSaveMat(mat,kingDeeUtilType, "同步新物料出错!!!"+mat, false); | 
|---|
|  |  |  | log.info("同步新物料出错!!!参数:[{}]、[{}]",mat,jsonArray); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callApiLogSaveMat(mat,kingDeeUtilType, "同步新物料!", true); | 
|---|
|  |  |  | //                                log.info("同步新物料[商品编号:{}]", mat.getMatnr()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | if (!jsonDate.equals(tag.getUpdateTime())){ | 
|---|
|  |  |  | callApiLogSaveMat(mat,kingDeeUtilType, "商品编号重复:"+mat.getMatnr(), false); | 
|---|
|  |  |  | log.info("同步新物料[商品编号:{}],商品编号重复!!!", mat.getMatnr()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | tag.setUpdateTime(jsonDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | tagService.updateById(tag); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | for (int j = 0; j < data.size(); j++) { | 
|---|
|  |  |  | JSONArray jsonArray = data.getJSONArray(j); | 
|---|
|  |  |  | //最新抓取时间 | 
|---|
|  |  |  | Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(1).toString()); | 
|---|
|  |  |  | docType.setCreateTime(jsonDate); | 
|---|
|  |  |  | Order order = orderService.selectByNo(jsonArray.get(0).toString()); | 
|---|
|  |  |  | if (Cools.isEmpty(order)) { | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | // 单据主档 | 
|---|
|  |  |  | order = new Order( | 
|---|
|  |  |  | String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空] | 
|---|
|  |  |  | jsonArray.get(0).toString(),    // 订单编号 | 
|---|
|  |  |  | DateUtils.convert(now),    // 单据日期 | 
|---|
|  |  |  | docType.getDocId(),    // 单据类型 | 
|---|
|  |  |  | null,    // 项目编号 | 
|---|
|  |  |  | null,    // | 
|---|
|  |  |  | null,    // 调拨项目编号 | 
|---|
|  |  |  | null,    // 初始票据号 | 
|---|
|  |  |  | null,    // 票据号 | 
|---|
|  |  |  | null,    // 客户编号 | 
|---|
|  |  |  | null,    // 客户 | 
|---|
|  |  |  | null,    // 联系方式 | 
|---|
|  |  |  | null,    // 操作人员 | 
|---|
|  |  |  | null,    // 合计金额 | 
|---|
|  |  |  | null,    // 优惠率 | 
|---|
|  |  |  | null,    // 优惠金额 | 
|---|
|  |  |  | null,    // 销售或采购费用合计 | 
|---|
|  |  |  | null,    // 实付金额 | 
|---|
|  |  |  | null,    // 付款类型 | 
|---|
|  |  |  | null,    // 业务员 | 
|---|
|  |  |  | null,    // 结算天数 | 
|---|
|  |  |  | null,    // 邮费支付类型 | 
|---|
|  |  |  | null,    // 邮费 | 
|---|
|  |  |  | null,    // 付款时间 | 
|---|
|  |  |  | null,    // 发货时间 | 
|---|
|  |  |  | null,    // 物流名称 | 
|---|
|  |  |  | null,    // 物流单号 | 
|---|
|  |  |  | 1L,    // 订单状态 | 
|---|
|  |  |  | 1,    // 状态 | 
|---|
|  |  |  | 9527L,    // 添加人员 | 
|---|
|  |  |  | now,    // 添加时间 | 
|---|
|  |  |  | 9527L,    // 修改人员 | 
|---|
|  |  |  | now,    // 修改时间 | 
|---|
|  |  |  | null    // 备注 | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!orderService.insert(order)) { | 
|---|
|  |  |  | if (!jsonDate.equals(docType.getCreateTime())){ | 
|---|
|  |  |  | callApiLogSaveOrder(order,kingDeeUtilType, "生成单据主档失败,请联系管理员"+order, false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | //                                throw new CoolException("生成单据主档失败,请联系管理员"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //物料编码 | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(jsonArray.get(2).toString()); | 
|---|
|  |  |  | if (Cools.isEmpty(mat)) { | 
|---|
|  |  |  | if (!jsonDate.equals(docType.getCreateTime())){ | 
|---|
|  |  |  | callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+jsonArray.get(2).toString(), false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString())); | 
|---|
|  |  |  | if (!Cools.isEmpty(orderDetl1)) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OrderDetl orderDetl = new OrderDetl(); | 
|---|
|  |  |  | orderDetl.sync(mat); | 
|---|
|  |  |  | orderDetl.setBatch(null); | 
|---|
|  |  |  | orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString())); | 
|---|
|  |  |  | orderDetl.setOrderId(order.getId()); | 
|---|
|  |  |  | orderDetl.setOrderNo(order.getOrderNo()); | 
|---|
|  |  |  | orderDetl.setCreateBy(9527L); | 
|---|
|  |  |  | orderDetl.setCreateTime(new Date()); | 
|---|
|  |  |  | orderDetl.setUpdateBy(9527L); | 
|---|
|  |  |  | orderDetl.setUpdateTime(new Date()); | 
|---|
|  |  |  | orderDetl.setStatus(1); | 
|---|
|  |  |  | orderDetl.setQty(0.0D); | 
|---|
|  |  |  | if (!orderDetlService.insert(orderDetl)) { | 
|---|
|  |  |  | callApiLogSaveOrder(order,kingDeeUtilType, "生成单据明细失败,请联系管理员!订单号:"+order.getOrderNo(), false); | 
|---|
|  |  |  | //                            throw new CoolException("生成单据明细失败,请联系管理员"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | docTypeService.updateById(docType); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("fail", e); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | //                try { | 
|---|
|  |  |  | //                    // 保存接口日志 | 
|---|
|  |  |  | //                    apiLogService.save( | 
|---|
|  |  |  | //                            "轮询数据", | 
|---|
|  |  |  | //                            URL + inaddress, | 
|---|
|  |  |  | //                            null, | 
|---|
|  |  |  | //                            "127.0.0.1", | 
|---|
|  |  |  | //                            add, | 
|---|
|  |  |  | //                            response, | 
|---|
|  |  |  | //                            success | 
|---|
|  |  |  | //                    ); | 
|---|
|  |  |  | //                } catch (Exception e) { | 
|---|
|  |  |  | //                    log.error("", e); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void callApiLogSaveMat(Mat mat, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { | 
|---|
|  |  |  | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, | 
|---|
|  |  |  | "物料编号:" + mat.getMatnr() + "、物料名称:" + mat.getName() + "、类型:" + mat.getTagId$() + "、状态:" + mat.getStatus$(), | 
|---|
|  |  |  | response, bool); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void callApiLogSaveOrder(Order order, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { | 
|---|
|  |  |  | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, | 
|---|
|  |  |  | "单据编号:" + order.getId() +  "、状态:" + order.getStatus$(), | 
|---|
|  |  |  | response, bool); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import com.zy.erp.kingdee.entity.param.LoginParam; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public class LoginAuthenticationHandler extends AbstractHandler<String> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.URL}") | 
|---|
|  |  |  | //端口 | 
|---|
|  |  |  | private String URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.loginaddress}") | 
|---|
|  |  |  | //登录地址 | 
|---|
|  |  |  | private String loginaddress; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.login.acctID}") | 
|---|
|  |  |  | //账号ID | 
|---|
|  |  |  | private String acctID; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.login.username}") | 
|---|
|  |  |  | //账号 | 
|---|
|  |  |  | private String username; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.login.password}") | 
|---|
|  |  |  | //密码 | 
|---|
|  |  |  | private String password; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.login.lcid}") | 
|---|
|  |  |  | // | 
|---|
|  |  |  | private Integer lcid; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 45分钟登录一次金蝶系统 | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public synchronized ReturnT<String> start() { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LoginParam loginParam =new LoginParam(); | 
|---|
|  |  |  | loginParam.setAcctID(acctID); | 
|---|
|  |  |  | loginParam.setUsername(username); | 
|---|
|  |  |  | loginParam.setPassword(password); | 
|---|
|  |  |  | loginParam.setLcid(lcid); | 
|---|
|  |  |  | //上报 | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | String cookie = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(loginaddress) | 
|---|
|  |  |  | .setJson(JSON.toJSONString(loginParam)) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  | Object sessionId = findValueByKey(JSON.parseObject(response), "SessionId"); | 
|---|
|  |  |  | cookie="ASP.NET_SessionId="+sessionId+";"+"kdservice-sessionid="+jsonObject.getString("KDSVCSessionId"); | 
|---|
|  |  |  | if (Cools.isEmpty(jsonObject.getString("Message"))) { | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callApiLogSaveLog(JSON.toJSONString(loginParam),false); | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+loginaddress, JSON.toJSONString(loginParam), response); | 
|---|
|  |  |  | //                throw new CoolException("登录金蝶失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("fail", e); | 
|---|
|  |  |  | callApiLogSaveLog(JSON.toJSONString(loginParam),false); | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+loginaddress, JSON.toJSONString(loginParam), response); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | //            try { | 
|---|
|  |  |  | //                // 保存接口日志 | 
|---|
|  |  |  | //                apiLogService.save( | 
|---|
|  |  |  | //                        "登录金蝶", | 
|---|
|  |  |  | //                        URL + loginaddress, | 
|---|
|  |  |  | //                        null, | 
|---|
|  |  |  | //                        "127.0.0.1", | 
|---|
|  |  |  | //                        JSON.toJSONString(loginParam), | 
|---|
|  |  |  | //                        response, | 
|---|
|  |  |  | //                        success | 
|---|
|  |  |  | //                ); | 
|---|
|  |  |  | //            } catch (Exception e) { log.error("", e); } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS.setContent(cookie); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static Object findValueByKey(JSONObject json, String key) { | 
|---|
|  |  |  | Set<String> keySet = json.keySet(); | 
|---|
|  |  |  | for (String k : keySet) { | 
|---|
|  |  |  | Object v = json.get(k); | 
|---|
|  |  |  | if (k.equals(key)) { | 
|---|
|  |  |  | return v; | 
|---|
|  |  |  | } else if (v instanceof JSONArray) { | 
|---|
|  |  |  | int size = ((JSONArray) v).size(); | 
|---|
|  |  |  | for (int i = 0; i <= size - 1; i++) { | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (v instanceof JSONObject){ | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) v, key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void callApiLogSaveLog(String response, Boolean bool) { | 
|---|
|  |  |  | apiLogService.save("登录金蝶失败", URL, "null", loginaddress, | 
|---|
|  |  |  | "套账ID:"+acctID+"、账号:"+username+"、密码:"+password, | 
|---|
|  |  |  | response, bool); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.zy.asrs.entity.DocType; | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.service.DocTypeService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import com.zy.erp.kingdee.enums.KingDeeUtilType; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by vincent on 2023/10/21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class ReviewOrderSyncHandler extends AbstractHandler<String> { | 
|---|
|  |  |  | @Value("${erp.address.URL}") | 
|---|
|  |  |  | //端口 | 
|---|
|  |  |  | private String URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.outaddressAudit}") | 
|---|
|  |  |  | //审核地址 | 
|---|
|  |  |  | private String outaddressAudit; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LoginAuthenticationHandler loginAuthenticationHandler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> start(Order order) { | 
|---|
|  |  |  | //登录金蝶r | 
|---|
|  |  |  | ReturnT<String> start = loginAuthenticationHandler.start(); | 
|---|
|  |  |  | DocType docType = docTypeService.selectById(order.getDocType()); | 
|---|
|  |  |  | if (null == docType) { | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //条件拼接 | 
|---|
|  |  |  | JSONObject dataJsonObject = new JSONObject(); | 
|---|
|  |  |  | dataJsonObject.put("Numbers",order.getOrderNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("data", dataJsonObject); | 
|---|
|  |  |  | jsonObject.put("FormId",kingDeeUtilType.formId); | 
|---|
|  |  |  | String add = jsonObject.toJSONString(); | 
|---|
|  |  |  | //上报 | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //获取Cookie值 | 
|---|
|  |  |  | HashMap<String, Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("Cookie", start.getContent()); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(outaddressAudit) | 
|---|
|  |  |  | .setJson(add) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject data = JSON.parseObject(response); | 
|---|
|  |  |  | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); | 
|---|
|  |  |  | String bool=IsSuccess.toString(); | 
|---|
|  |  |  | //审核完成原订单4转6  6.上报完成 | 
|---|
|  |  |  | if(bool.equals("true")){ | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | order.setSettle(6L); | 
|---|
|  |  |  | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("fail", e); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "审核", | 
|---|
|  |  |  | URL+ outaddressAudit, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | add, | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public static Object findValueByKey(JSONObject json, String key) { | 
|---|
|  |  |  | Set<String> keySet = json.keySet(); | 
|---|
|  |  |  | for (String k : keySet) { | 
|---|
|  |  |  | Object v = json.get(k); | 
|---|
|  |  |  | if (k.equals(key)) { | 
|---|
|  |  |  | return v; | 
|---|
|  |  |  | } else if (v instanceof JSONArray) { | 
|---|
|  |  |  | int size = ((JSONArray) v).size(); | 
|---|
|  |  |  | for (int i = 0; i <= size - 1; i++) { | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (v instanceof JSONObject){ | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) v, key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.zy.asrs.entity.DocType; | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.service.DocTypeService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import com.zy.erp.kingdee.enums.KingDeeUtilType; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by Monkey D. Luffy on 2023.10.21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class SaveOrderSyncHandler extends AbstractHandler<String> { | 
|---|
|  |  |  | @Value("${erp.address.URL}") | 
|---|
|  |  |  | //端口 | 
|---|
|  |  |  | private String URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.outaddressSave}") | 
|---|
|  |  |  | //保存地址 | 
|---|
|  |  |  | private String outaddressSave; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LoginAuthenticationHandler loginAuthenticationHandler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> start(Order order) { | 
|---|
|  |  |  | //登录金蝶r | 
|---|
|  |  |  | ReturnT<String> start = loginAuthenticationHandler.start(); | 
|---|
|  |  |  | DocType docType = docTypeService.selectById(order.getDocType()); | 
|---|
|  |  |  | if (null == docType) { | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //条件拼接 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("Numbers",order.getOrderNo()); | 
|---|
|  |  |  | JSONObject jsonObject1 = new JSONObject(); | 
|---|
|  |  |  | jsonObject1.put("data", jsonObject); | 
|---|
|  |  |  | jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); | 
|---|
|  |  |  | String add = jsonObject1.toJSONString(); | 
|---|
|  |  |  | //上报 | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //获取Cookie值 | 
|---|
|  |  |  | HashMap<String, Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("Cookie", start.getContent()); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(outaddressSave) | 
|---|
|  |  |  | .setJson(add) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject data = JSON.parseObject(response); | 
|---|
|  |  |  | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); | 
|---|
|  |  |  | String bool=IsSuccess.toString(); | 
|---|
|  |  |  | //保存完成原订单8转6 | 
|---|
|  |  |  | if(bool.equals("true")){ | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | order.setSettle(6L); | 
|---|
|  |  |  | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("fail", e); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "保存", | 
|---|
|  |  |  | URL+ outaddressSave, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | add, | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public static Object findValueByKey(JSONObject json, String key) { | 
|---|
|  |  |  | Set<String> keySet = json.keySet(); | 
|---|
|  |  |  | for (String k : keySet) { | 
|---|
|  |  |  | Object v = json.get(k); | 
|---|
|  |  |  | if (k.equals(key)) { | 
|---|
|  |  |  | return v; | 
|---|
|  |  |  | } else if (v instanceof JSONArray) { | 
|---|
|  |  |  | int size = ((JSONArray) v).size(); | 
|---|
|  |  |  | for (int i = 0; i <= size - 1; i++) { | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (v instanceof JSONObject){ | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) v, key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task.kingdee.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.zy.asrs.entity.DocType; | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.service.DocTypeService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import com.zy.erp.kingdee.enums.KingDeeUtilType; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by Monkey D. Luffy on 2023.10.21 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class SubmitOrderSyncHandler extends AbstractHandler<String> { | 
|---|
|  |  |  | @Value("${erp.address.URL}") | 
|---|
|  |  |  | //端口 | 
|---|
|  |  |  | private String URL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${erp.address.outaddressSubmit}") | 
|---|
|  |  |  | //提交地址 | 
|---|
|  |  |  | private String outaddressSubmit; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LoginAuthenticationHandler loginAuthenticationHandler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> start(Order order) { | 
|---|
|  |  |  | //登录金蝶r | 
|---|
|  |  |  | ReturnT<String> start = loginAuthenticationHandler.start(); | 
|---|
|  |  |  | DocType docType = docTypeService.selectById(order.getDocType()); | 
|---|
|  |  |  | if (null == docType) { | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //条件拼接 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("Numbers",order.getOrderNo()); | 
|---|
|  |  |  | JSONObject jsonObject1 = new JSONObject(); | 
|---|
|  |  |  | jsonObject1.put("data", jsonObject); | 
|---|
|  |  |  | jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); | 
|---|
|  |  |  | String add = jsonObject1.toJSONString(); | 
|---|
|  |  |  | //上报 | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //获取Cookie值 | 
|---|
|  |  |  | HashMap<String, Object> headers = new HashMap<>(); | 
|---|
|  |  |  | headers.put("Cookie", start.getContent()); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setHeaders(headers) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(outaddressSubmit) | 
|---|
|  |  |  | .setJson(add) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject data = JSON.parseObject(response); | 
|---|
|  |  |  | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); | 
|---|
|  |  |  | String bool=IsSuccess.toString(); | 
|---|
|  |  |  | //提交完成原订单8转6 | 
|---|
|  |  |  | if(bool.equals("true")){ | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | order.setSettle(6L); | 
|---|
|  |  |  | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("fail", e); | 
|---|
|  |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "提交", | 
|---|
|  |  |  | URL+ outaddressSubmit, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | add, | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public static Object findValueByKey(JSONObject json, String key) { | 
|---|
|  |  |  | Set<String> keySet = json.keySet(); | 
|---|
|  |  |  | for (String k : keySet) { | 
|---|
|  |  |  | Object v = json.get(k); | 
|---|
|  |  |  | if (k.equals(key)) { | 
|---|
|  |  |  | return v; | 
|---|
|  |  |  | } else if (v instanceof JSONArray) { | 
|---|
|  |  |  | int size = ((JSONArray) v).size(); | 
|---|
|  |  |  | for (int i = 0; i <= size - 1; i++) { | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (v instanceof JSONObject){ | 
|---|
|  |  |  | Object result = findValueByKey((JSONObject) v, key); | 
|---|
|  |  |  | if (result != null){ | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.erp.kingdee.entity.param; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class InFormIdParam { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //查找表单唯一标识 | 
|---|
|  |  |  | private String FormId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //最多允许查询的数量,0或者不要此属性标识不限制 | 
|---|
|  |  |  | private String TopRowCount; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Integer Limit; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String StartRow; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //过滤条件(eg:\"FNumber>'0301010120001' and FCreateDate>'2023-07-05' \") | 
|---|
|  |  |  | //1、Left:左括号 | 
|---|
|  |  |  | //3、Compare:比较运算符,如 大于">"、小于"<"、等于"="、包含"like"、左包含"llike"、右包含"rlike" | 
|---|
|  |  |  | //4、Value:比较值 | 
|---|
|  |  |  | //5、Right:右括号 | 
|---|
|  |  |  | //6、Logic:逻辑运算符,如 "and"、"or" | 
|---|
|  |  |  | private Integer Filterstring; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //排序条件 | 
|---|
|  |  |  | private Integer OrderString; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //待查询表单的字段列(期望返回值) | 
|---|
|  |  |  | private Integer FieldKeys; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.erp.kingdee.entity.param; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import lombok.Data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | public class LoginParam { | 
|---|
|  |  |  | //账号ID | 
|---|
|  |  |  | private String acctID; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //账号 | 
|---|
|  |  |  | private String username; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //密码 | 
|---|
|  |  |  | private String password; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | private Integer lcid; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.erp.kingdee.enums; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public enum KingDeeUtilType { | 
|---|
|  |  |  | BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1), | 
|---|
|  |  |  | //    STK_InStock(1, "采购入库单","STK_InStock","FRealQty","","",1), | 
|---|
|  |  |  | //    PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1), | 
|---|
|  |  |  | //    PRD_PickMtrl(3, "生产领料单","PRD_PickMtrl","FActualQty","","",1), | 
|---|
|  |  |  | //    PRD_ReturnMtrl(4, "生产退料单","PRD_ReturnMtrl","FQty","","",1), | 
|---|
|  |  |  | //    PRD_FeedMtrl(5, "生产补料单","PRD_FeedMtrl","FActualQty","","",1), | 
|---|
|  |  |  | //    STK_TransferDirect(6, "直接调拨单","STK_TransferDirect","","FQty","",1), | 
|---|
|  |  |  | //    STK_StockCountGain(7, "盘盈单","STK_StockCountGain","FGainQty","","",1), | 
|---|
|  |  |  | //    STK_StockCountLoss(8, "盘亏单","STK_StockCountLoss","FLossQty","","",1), | 
|---|
|  |  |  | //    STK_MisDelivery(9, "其他出库单","STK_MisDelivery","FQty","","",1), | 
|---|
|  |  |  | //    SP_PickMtrl(10, "简单生产领料单","SP_PickMtrl","FActualQty","","",1), | 
|---|
|  |  |  | //    SP_ReturnMtrl(11, "简单生产退料单","SP_ReturnMtrl","FQty","","",1), | 
|---|
|  |  |  | //    SAL_OUTSTOCK(12, "销售出库单","SAL_OUTSTOCK","FRealQty","","",1), | 
|---|
|  |  |  | //    SAL_RETURNSTOCK(13, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1), | 
|---|
|  |  |  | SAL_DELIVERYNOTICE(14, "发货通知单","SAL_DELIVERYNOTICE","FQty","销售出库单","SAL_OUTSTOCK",0), | 
|---|
|  |  |  | STK_MISCELLANEOUS(15, "其他入库单","STK_MISCELLANEOUS","FQty","其他入库单","STK_MISCELLANEOUS",1), | 
|---|
|  |  |  | //    BD_Supplier(16, "供应商","BD_Supplier","","","",1), | 
|---|
|  |  |  | PUR_ReceiveBill(17, "收料通知单","PUR_ReceiveBill","FPOQTY","采购入库单","STK_InStock",1), | 
|---|
|  |  |  | PRD_MORPT(18, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1), | 
|---|
|  |  |  | //    PRD_INSTOCK(19, "生产入库单","PRD_INSTOCK","","","",1), | 
|---|
|  |  |  | SAL_RETURNNOTICE(20, "退货通知单","SAL_RETURNNOTICE","FBaseJunkedQty","销售退货单","SAL_RETURNSTOCK",1), | 
|---|
|  |  |  | STK_OutStockApply(21, "出库申请单","STK_OutStockApply","FTotalSecQty","其他出库单","STK_MisDelivery",0), | 
|---|
|  |  |  | //米多青岛 | 
|---|
|  |  |  | STK_OutStockApply30(30, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  | STK_OutStockApply31(31, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  | STK_OutStockApply32(32, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  | STK_OutStockApply33(33, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  | STK_OutStockApply34(34, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  | STK_OutStockApply35(35, "试用品发货通知单","","","研发样品出库单","",0), | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | public Integer id; | 
|---|
|  |  |  | public String desc; | 
|---|
|  |  |  | public String formId; | 
|---|
|  |  |  | public String anfme; | 
|---|
|  |  |  | public String correspondingName; | 
|---|
|  |  |  | public String correspondingFormId; | 
|---|
|  |  |  | public Integer pakIn; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | KingDeeUtilType(Integer id, String desc,String formId,String anfme,String correspondingName,String correspondingFormId,int pakIn){ | 
|---|
|  |  |  | this.id = id; | 
|---|
|  |  |  | this.desc = desc; | 
|---|
|  |  |  | this.formId = formId; | 
|---|
|  |  |  | this.anfme = anfme; | 
|---|
|  |  |  | this.correspondingName = correspondingName; | 
|---|
|  |  |  | this.correspondingFormId = correspondingFormId; | 
|---|
|  |  |  | this.pakIn = pakIn;   //1入库  0出库 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static KingDeeUtilType get(Short id) { | 
|---|
|  |  |  | if (null == id) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (KingDeeUtilType type : KingDeeUtilType.values()) { | 
|---|
|  |  |  | if (type.id.equals(id.intValue())) { | 
|---|
|  |  |  | return type; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static KingDeeUtilType get(String desc) { | 
|---|
|  |  |  | if (null == desc) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (KingDeeUtilType type : KingDeeUtilType.values()) { | 
|---|
|  |  |  | if (type.desc.equals(desc)) { | 
|---|
|  |  |  | return type; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static KingDeeUtilType get(KingDeeUtilType type) { | 
|---|
|  |  |  | if (null == type) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (KingDeeUtilType crnLiftPosType : KingDeeUtilType.values()) { | 
|---|
|  |  |  | if (crnLiftPosType == type) { | 
|---|
|  |  |  | return crnLiftPosType; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.erp.kingdee.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.time.format.DateTimeFormatter; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class KingDeeUtil { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //对美国时间进行转换 | 
|---|
|  |  |  | public static Date KingDeeDate(String jsonArrayDate) throws ParseException { | 
|---|
|  |  |  | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); | 
|---|
|  |  |  | DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; | 
|---|
|  |  |  | LocalDateTime dateTime = LocalDateTime.parse(jsonArrayDate, formatter); | 
|---|
|  |  |  | String format = dateFormat.format(dateTime); | 
|---|
|  |  |  | return sdf.parse(format); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.erp.kingdee.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.core.common.SpringUtils; | 
|---|
|  |  |  | import com.core.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.utils.HttpHandler; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | public class PostMesDataUtils extends AbstractHandler<String> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam){ | 
|---|
|  |  |  | //        if (true){ | 
|---|
|  |  |  | //            System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); | 
|---|
|  |  |  | //            return SUCCESS; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | if(combParam != null){ | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //                Map<String, Object> map = new HashMap<>() | 
|---|
|  |  |  | //                map.put("appkey","ea1f0459efc02a79f046f982767939ae"); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | //                        .setHeaders(map) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(mesPath) | 
|---|
|  |  |  | .setJson(JSON.toJSONString(combParam)) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | System.out.println("response:"+response); | 
|---|
|  |  |  | JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (jsonObject.getInteger("code").equals(200)) { | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); | 
|---|
|  |  |  | throw new CoolException("上报"+name); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); | 
|---|
|  |  |  | //                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "上报"+name, | 
|---|
|  |  |  | URL +"/"+ mesPath, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | JSON.toJSONString(combParam), | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam, Map<String, Object> map){ | 
|---|
|  |  |  | //        if (true){ | 
|---|
|  |  |  | //            System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); | 
|---|
|  |  |  | //            return SUCCESS; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | if(combParam != null){ | 
|---|
|  |  |  | String response = ""; | 
|---|
|  |  |  | boolean success = false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //                Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | //                map.put("appkey","ea1f0459efc02a79f046f982767939ae"); | 
|---|
|  |  |  | response = new HttpHandler.Builder() | 
|---|
|  |  |  | .setHeaders(map) | 
|---|
|  |  |  | .setUri(URL) | 
|---|
|  |  |  | .setPath(mesPath) | 
|---|
|  |  |  | .setJson(JSON.toJSONString(combParam)) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | System.out.println("response:"+response); | 
|---|
|  |  |  | JSONObject jsonObject = JSON.parseObject(response); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (jsonObject.getInteger("code").equals(200)) { | 
|---|
|  |  |  | success = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); | 
|---|
|  |  |  | throw new CoolException("上报"+name); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); | 
|---|
|  |  |  | //                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg(e.getMessage()); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 保存接口日志 | 
|---|
|  |  |  | ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); | 
|---|
|  |  |  | apiLogService.save( | 
|---|
|  |  |  | "上报"+name, | 
|---|
|  |  |  | URL +"/"+ mesPath, | 
|---|
|  |  |  | null, | 
|---|
|  |  |  | "127.0.0.1", | 
|---|
|  |  |  | JSON.toJSONString(combParam), | 
|---|
|  |  |  | response, | 
|---|
|  |  |  | success | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("", e); } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | # 一个堆垛机负责的货架排数 | 
|---|
|  |  |  | groupCount: 4 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #erp | 
|---|
|  |  |  | #金蝶erp对接 | 
|---|
|  |  |  | erp: | 
|---|
|  |  |  | #  开关 | 
|---|
|  |  |  | switch: | 
|---|
|  |  |  | #获取单据开关  米多无用 | 
|---|
|  |  |  | InboundOrderSwitch: false | 
|---|
|  |  |  | #登录接口开关 | 
|---|
|  |  |  | LoginAuthenticationSwitch: false | 
|---|
|  |  |  | #上报单据开关 | 
|---|
|  |  |  | ReviewOrderSwitch: false | 
|---|
|  |  |  | #  地址 | 
|---|
|  |  |  | address: | 
|---|
|  |  |  | URL: http://58.210.10.90:28090 | 
|---|
|  |  |  | #登录地址 | 
|---|
|  |  |  | loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc | 
|---|
|  |  |  | #单据,商品档案地址 | 
|---|
|  |  |  | inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc | 
|---|
|  |  |  | #结果上报(保存)单地址  米多无用 | 
|---|
|  |  |  | outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc | 
|---|
|  |  |  | #结果上报(提交)单地址  米多无用 | 
|---|
|  |  |  | outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc | 
|---|
|  |  |  | #结果上报(审核)单地址 | 
|---|
|  |  |  | outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc | 
|---|
|  |  |  | #  登录账号管理 | 
|---|
|  |  |  | login : | 
|---|
|  |  |  | acctID: "65712e41a21468" | 
|---|
|  |  |  | username: "13465800579" | 
|---|
|  |  |  | password: "a.111111" | 
|---|
|  |  |  | lcid: 2052 | 
|---|
|  |  |  | #  速腾对接 已废弃  保持false | 
|---|
|  |  |  | enable: false | 
|---|