package zy.cloud.wms.common.service.erp; import com.alibaba.fastjson.JSON; import com.core.common.Cools; import com.core.common.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import zy.cloud.wms.common.model.BillDto; import zy.cloud.wms.common.service.erp.entity.UploadBill; import zy.cloud.wms.common.service.erp.entity.UploadBillDetail; import zy.cloud.wms.manager.entity.DocLog; import zy.cloud.wms.manager.entity.DocType; import zy.cloud.wms.manager.entity.Mat; import zy.cloud.wms.manager.entity.RequestLog; import zy.cloud.wms.manager.service.DocLogService; import zy.cloud.wms.manager.service.DocTypeService; import zy.cloud.wms.manager.service.MatService; import zy.cloud.wms.manager.service.RequestLogService; import zy.cloud.wms.manager.utils.HttpHandler; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by vincent on 2021/3/23 */ @Slf4j @Service("erpService") public class ErpService { @Autowired private DocTypeService docTypeService; @Autowired private MatService matService; @Autowired private RequestLogService requestLogService; @Autowired private DocLogService docLogService; /** * 单据上报 */ public ErpR uploadBill(List dtos, Integer docId, String docNumber){ try { Date now = new Date(); if (Cools.isEmpty(dtos)) { return new ErpR(false, null); } DocType docType = docTypeService.selectById(docId); if (Cools.isEmpty(docType)) { return new ErpR(false, null); } // 日志 List docLogs = new ArrayList<>(); UploadBill uploadBill = new UploadBill(); uploadBill.setNumber(docNumber); uploadBill.setBillDate(DateUtils.convert(new Date(), DateUtils.yyyyMMdd_F)); uploadBill.setBTypeID("SHHT"); uploadBill.setKTypeID("宏挺仓库"); uploadBill.setVchType(docId); if (docId == 9) { uploadBill.setDifAtype(22); } else if (docId == 14) { uploadBill.setDifAtype(23); } uploadBill.setSummary(docType.getDocName() + " - " + DateUtils.convert(new Date(), "yyyy-MM-dd HH:mm")); List detail = new ArrayList<>(); uploadBill.setDetail(detail); for (BillDto dto : dtos) { Mat mat = matService.selectByMatnr(dto.getMatnr()); UploadBillDetail detl = new UploadBillDetail(); detl.setUserCode(dto.getMatnr()); detl.setQty(dto.getQty()); detl.setPrice(0); detl.setUnit(mat==null?"暂无":mat.getUnit()); detail.add(detl); // 日志 docLogs.add(new DocLog( docNumber, // 单据编号 docId.longValue(), // 单据类型 null, // 单据名称 dto.getMatnr(), // 商品编号 dto.getQty(), // 上报数量 1, // 结果 now, // 上报时间 null // 备注 )); } log.warn(JSON.toJSONString(uploadBill)); String response = new HttpHandler.Builder() .setUri(ErpScheduler.URI) .setPath(ErpScheduler.UPLOAD_BILL) .setJson(JSON.toJSONString(uploadBill)) .build() .doPost(); try { for (DocLog docLog : docLogs) { docLogService.insert(docLog); } // 日志记录 RequestLog logInfo = new RequestLog(); logInfo.setName("单据上传,单据类型" + docId); logInfo.setRequest(JSON.toJSONString(uploadBill)); // 入参 logInfo.setResponse(response); // 出参 logInfo.setCreateTime(new Date()); requestLogService.insert(logInfo); } catch (Exception e) { log.error(e.getMessage()); } if (!Cools.isEmpty(response)) { log.warn(response); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return new ErpR(false, result.getMsg()); } } } catch (Exception e) { e.printStackTrace(); return new ErpR(false, e.getMessage()); } return new ErpR(true, null); } }