|
|
@@ -1,6 +1,8 @@
|
|
|
package com.uas.erp.schedular.b2b.task;
|
|
|
|
|
|
import com.uas.erp.schedular.b2b.domain.*;
|
|
|
+import com.uas.erp.schedular.database.SqlTemplate;
|
|
|
+import com.uas.erp.schedular.task.support.Method;
|
|
|
import com.uas.erp.schedular.task.support.Role;
|
|
|
import com.uas.erp.schedular.task.support.TaskMapping;
|
|
|
import com.uas.erp.schedular.util.CollectionUtil;
|
|
|
@@ -9,9 +11,14 @@ import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
+ * 关于公共询价的轮询操作
|
|
|
+ *
|
|
|
* Created by Pro1 on 2017/9/23.
|
|
|
*/
|
|
|
@Component
|
|
|
@@ -76,4 +83,135 @@ public class PublicInquiryTask extends AbstractTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 从平台获取供应商已经报价的公共询价单
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 16:32
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @TaskMapping(title = "从平台下载供应商的询价单报价", fixedDelay = 60000, method = Method.DOWNLOAD)
|
|
|
+ public void downloadReply() throws Exception{
|
|
|
+ List<InquiryDetail> details = getForList("/erp/purchase/publicinquiry/infos", InquiryDetail.class);
|
|
|
+ if (!CollectionUtils.isEmpty(details)) {
|
|
|
+ ContextHolder.setDataSize(details.size());
|
|
|
+ saveInquiryReply(details);
|
|
|
+ // 回执
|
|
|
+ onReplySuccess(details);
|
|
|
+ // 附件
|
|
|
+ saveInquiryDetailAttach(details);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存供应商的报价信息,存到ERP
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 16:39
|
|
|
+ * @param details 询价明细
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ private void saveInquiryReply(List<InquiryDetail> details) throws Exception {
|
|
|
+ // 先获取状态(用于区分消息类型)
|
|
|
+ for (InquiryDetail detail : details) {
|
|
|
+ String status = jdbcTemplate.getString("select max(id_status) from inquirydetail,inquiry where id_inid=in_id and in_code=? and id_vendyyzzh=? and id_prodcode=?",
|
|
|
+ detail.getIn_code(), detail.getId_vendyyzzh(), detail.getId_prodcode());
|
|
|
+ detail.setId_status(status);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> model = new HashMap<>();
|
|
|
+ model.put("inquiryDetails", details);
|
|
|
+ // 解析sql模板
|
|
|
+ String sql = SqlTemplate.fromXmlFile("database/template/pubInquiryReply.xml", model);
|
|
|
+ jdbcTemplate.execute(sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改平台里面询价单的下载状态
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 16:40
|
|
|
+ * @param details 询价单明细
|
|
|
+ */
|
|
|
+ private void onReplySuccess(List<InquiryDetail> details) {
|
|
|
+ String idStr = CollectionUtil.getKeyString(details);
|
|
|
+ post("/erp/purchase/publicinquiry/reply/back", dataWrap(idStr));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存来自平台的公共询价单附件信息
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 16:41
|
|
|
+ * @param details 询价单明细
|
|
|
+ */
|
|
|
+ private void saveInquiryDetailAttach(List<InquiryDetail> details) {
|
|
|
+ List<String> sqls = new ArrayList<String>();
|
|
|
+ String remoteUrl = "B2B://file";
|
|
|
+ for (InquiryDetail detail : details) {
|
|
|
+ if (!CollectionUtils.isEmpty(detail.getFiles())) {
|
|
|
+ StringBuffer attachIds = new StringBuffer();
|
|
|
+ for (RemoteFile file : detail.getFiles()) {
|
|
|
+ int id = jdbcTemplate.generate("filepath_seq");
|
|
|
+ sqls.add(file.toSqlString(id, remoteUrl));
|
|
|
+ attachIds.append(id).append(";");
|
|
|
+ }
|
|
|
+ sqls.add("update InquiryDetail set id_attach='" + attachIds.toString() + "' where id_id=" + detail.getId_id());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ jdbcTemplate.batchExecute(sqls);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ERP询价单提交后,同步到平台进行状态更新
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 19:32
|
|
|
+ */
|
|
|
+ @TaskMapping(title = "询价单提交后,上传平台", fixedDelay = 60000)
|
|
|
+ public void uploadCheckInquiry() {
|
|
|
+ List<Inquiry> inquiries = jdbcTemplate.queryForBeanList("select * from (select in_id,in_code from inquiryAuto where in_checkStatus = '已提交' and in_checkSendStatus='待上传' and nvl(in_class,' ')<>'主动报价' and in_sendStatus='已上传' order by in_id) where rownum < 100", Inquiry.class);
|
|
|
+ if (!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ ContextHolder.setDataSize(inquiries.size());
|
|
|
+ new StatusBasedHandler<Inquiry>("inquiryAuto", "in_id", "in_checkSendStatus", "/erp/purchase/publicinquiry/checking", inquiries).run();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ERP针对卖家报价信息的采纳状态传回平台
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 19:34
|
|
|
+ */
|
|
|
+ @TaskMapping(title = "上传买家对报价信息是否采纳的决策到平台", fixedDelay = 60000)
|
|
|
+ public void uploadInquiryDecide() {
|
|
|
+ List<InquiryDecide> replies = jdbcTemplate.queryForBeanList("select id_id,in_code,id_detno,id_isagreed id_agreed from InquiryAutoDetail left join InquiryAuto on id_inid=in_id left join vendor on id_vendcode=ve_code where IN_SENDSTATUS='已上传' and nvl(in_class,' ')<>'主动报价' and ID_SENDSTATUS='待上传' and id_isagreed is not null and ve_uu is not null and nvl(ve_b2benable,0)=1 and rownum < 100 order by in_code,id_detno",
|
|
|
+ InquiryDecide.class);
|
|
|
+ if (!CollectionUtils.isEmpty(replies)) {
|
|
|
+ ContextHolder.setDataSize(replies.size());
|
|
|
+ post("/erp/purchase/publicinquiry/reply/decide", dataWrap(replies));
|
|
|
+ String idStr = CollectionUtil.getKeyString(replies);
|
|
|
+ logger.info("上传采纳决策到平台,ids: " + idStr);
|
|
|
+ jdbcTemplate.execute("update InquiryAutoDetail set id_sendstatus='已下载' where id_id in (" + idStr + ")");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ERP单据作废信息传回平台进行操作
|
|
|
+ *
|
|
|
+ * @author hejq
|
|
|
+ * @date 2018-01-10 19:34
|
|
|
+ */
|
|
|
+ @TaskMapping(title = "上传买家对报价信息作废的决策到平台", fixedDelay = 60000)
|
|
|
+ public void uploadInquiryInvalid() {
|
|
|
+ List<Inquiry> inquiries = jdbcTemplate.queryForBeanList("select * from InquiryAuto left join InquiryAutoDetail on id_inid=in_id left join vendor on id_vendcode=ve_code where in_status = '已作废' and in_sendStatus <> '作废已上传' and nvl(in_class,' ')<>'主动报价' and ve_uu is not null and nvl(ve_b2benable,0)=1 and rownum <= 100 order by in_code",
|
|
|
+ Inquiry.class);
|
|
|
+ if (!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ ContextHolder.setDataSize(inquiries.size());
|
|
|
+ post("/erp/purchase/publicinquiry/invalid", dataWrap(inquiries));
|
|
|
+ String idStr = CollectionUtil.getKeyString(inquiries);
|
|
|
+ logger.info("公共询价单作废单据,ids: " + idStr);
|
|
|
+ jdbcTemplate.execute("update InquiryAuto set in_sendStatus='作废已上传' where in_id in (" + idStr + ")");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|