|
|
@@ -4,6 +4,7 @@ import com.uas.erp.schedular.agent.v1.SaleChangeAgent;
|
|
|
import com.uas.erp.schedular.b2b.domain.SaleDownChange;
|
|
|
import com.uas.erp.schedular.b2b.domain.SaleDownChangeDetail;
|
|
|
import com.uas.erp.schedular.b2b.domain.SaleDownChangeReply;
|
|
|
+import com.uas.erp.schedular.core.Constant;
|
|
|
import com.uas.erp.schedular.core.Status;
|
|
|
import com.uas.erp.schedular.task.support.Method;
|
|
|
import com.uas.erp.schedular.task.support.Role;
|
|
|
@@ -40,6 +41,25 @@ public class SaleDownChangeTask extends AbstractTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @TaskMapping(title = "从平台下载平台新增的采购变更单(买方b2b)", fixedDelay = 60000, method = Method.DOWNLOAD)
|
|
|
+ public void downloadSaleDownChangeB2b() {
|
|
|
+ List<SaleDownChange> changes = getForList("/erp/sale/change/b2b", SaleDownChange.class);
|
|
|
+ if (!CollectionUtils.isEmpty(changes)) {
|
|
|
+ ContextHolder.setDataSize(changes.size());
|
|
|
+ saveSaleDownChange(changes);
|
|
|
+ //保存无需确认的采购订单
|
|
|
+ for (SaleDownChange saleDownChange : changes) {
|
|
|
+ if (saleDownChange.getSc_unNeedReply().equals(Constant.YES)) {
|
|
|
+ saveUnNeedReply(saleDownChange);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 回执
|
|
|
+ onSaleDownChangeSuccess(changes);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存saledownchange
|
|
|
*
|
|
|
@@ -150,6 +170,49 @@ public class SaleDownChangeTask extends AbstractTask {
|
|
|
jdbcTemplate.batchExecute(sqls);
|
|
|
}
|
|
|
|
|
|
+ private void saveUnNeedReply(SaleDownChange saleDownChange) {
|
|
|
+ Integer changeId = 0;
|
|
|
+ List<String> sqls = new ArrayList<>();
|
|
|
+ Integer sc_id = jdbcTemplate.getInt("select sc_id from saledownchange where sc_code=?", saleDownChange.getSc_code());
|
|
|
+ if (null != sc_id) {
|
|
|
+ sqls.add("update saledownchange set sc_agreed= -1 , sc_replyremark='无需回复',sc_status='" + Status.AUDITED.display()
|
|
|
+ + "',sc_statuscode='" + Status.AUDITED.code() + "',sc_sendstatus='已下载' where sc_id=" + sc_id);
|
|
|
+ // 变更达成
|
|
|
+ sqls.add("update SaleDown set (sa_payments,sa_currency,sa_rate)=(select max(nvl(sc_newpayments,sc_payments)),max(nvl(sc_currency,sc_newcurrency)),max(nvl(sc_rate,sc_newrate)) from SaleDownChange where sc_sacode=sa_code and sc_id=" + sc_id +
|
|
|
+ ") where sa_code=(select sc_sacode from SaleDownChange where sc_id=" + sc_id + ")");
|
|
|
+ sqls.add("update SaleDownDetail set (sd_custprodcode,sd_custproddetail,sd_custprodspec,sd_custprodunit,sd_prodcode)=(select max(scd_newcustprodcode),max(scd_newcustproddetail),max(scd_newcustprodspec),max(scd_newcustprodunit),max(scd_newprodcode) from SaleDownChangeDetail where scd_sacode=sd_code and scd_sddetno=sd_detno and scd_scid=" + sc_id +
|
|
|
+ ") where exists (select 1 from SaleDownChangeDetail where scd_scid=" + sc_id +
|
|
|
+ " and scd_sacode=sd_code and scd_sddetno=sd_detno and nvl(scd_newprodcode,scd_prodcode)<>scd_prodcode)");
|
|
|
+ sqls.add("update SaleDownDetail set (sd_delivery,sd_qty,sd_price,sd_taxrate)=(select max(nvl(scd_newdelivery,scd_delivery)),max(nvl(scd_newqty,scd_qty)),max(nvl(scd_newprice,scd_price)),max(nvl(scd_newtaxrate,scd_taxrate)) from SaleDownChangeDetail where scd_scid=" + sc_id +
|
|
|
+ " and scd_sacode=sd_code and scd_sddetno=sd_detno) where exists (select 1 from SaleDownChangeDetail where scd_scid=" + sc_id + " and scd_sacode=sd_code and scd_sddetno=sd_detno)");
|
|
|
+ // 存在订单
|
|
|
+ Integer sa_id = jdbcTemplate.getInt("select max(sa_id) from sale where (sa_pocode,sa_custcode)=(select sa_code,sa_custcode from saledown left join saledownchange on sa_code=sc_sacode and sa_customeruu=sc_custuu where sc_id=?)", sc_id);
|
|
|
+ if (null != sa_id && sa_id != 0) {
|
|
|
+ changeId = jdbcTemplate.generate("SaleChange_SEQ");
|
|
|
+ String code = jdbcTemplate.generateCode("SaleChange", 2);
|
|
|
+ // //自动产生对应销售变更单
|
|
|
+ sqls.add(String.format("insert into SaleChange(sc_id,sc_code,sc_saleid,sc_salecode,sc_recorderman,sc_indate,sc_remark,sc_status,sc_statuscode,sc_pocode,sc_sakind)"
|
|
|
+ + " select %s,'%s',sa_id,sa_code,sc_recorder,sysdate,sc_remark,'已提交','COMMITED',sa_pocode,sa_kind from sale,saledownchange where sa_id=%s and sc_id=%s and sa_pocode=sc_sacode and sa_custcode=sc_custcode",
|
|
|
+ changeId, code, sa_id, sc_id));
|
|
|
+ sqls.add(String.format("insert into SaleChangeDetail(scd_id,scd_scid,scd_code,scd_said,scd_sacode,scd_sddetno,scd_prodid,scd_prodcode,scd_newprodcode," +
|
|
|
+ "scd_qty,scd_newqty,scd_price,scd_newprice,scd_delivery,scd_newdelivery,scd_taxrate,scd_newtaxrate,scd_payments,scd_paymentname," +
|
|
|
+ "scd_newpayments,scd_currency,scd_newcurrency,scd_total,scd_newtotal) select SaleChangeDetail_SEQ.nextval,%s,'%s',sa_id,sa_code," +
|
|
|
+ "sd_detno,sd_prodid,sd_prodcode,scd_newprodcode,sd_qty,scd_newqty,sd_price,scd_newprice,sd_delivery,scd_newdelivery,sd_taxrate," +
|
|
|
+ "scd_newtaxrate,sa_paymentscode,sa_payments,sc_newpaymentscode,sa_currency,sc_newcurrency,sd_total,round(scd_newqty*scd_newprice,2) " +
|
|
|
+ "from saledetail,sale,saledownchangedetail,saledownchange where sd_said=%s and scd_scid=%s and sd_said=sa_id and scd_scid=sc_id and sa_pocode=sc_sacode and sd_detno=scd_sddetno",
|
|
|
+ changeId, code, sa_id, sc_id));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ jdbcTemplate.batchExecute(sqls);
|
|
|
+ if (!changeId.equals(Constant.NO)) {
|
|
|
+ // 变更单审核动作,包括变更信息写到订单等操作
|
|
|
+ if (!saleChangeAgent.audit(changeId)) {
|
|
|
+ throw new RuntimeException("[调用UAS接口执行变更单审核动作]出现异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 将从平台下载的回复记录保存成功之后,回执给平台
|
|
|
*
|
|
|
@@ -179,4 +242,19 @@ public class SaleDownChangeTask extends AbstractTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @TaskMapping(title ="上传ERP供应商回复信息,修改采购变更单、客户采购单",fixedDelay = 60000,method = Method.UPLOAD)
|
|
|
+ public void downSaleChangeReplyB2b() {
|
|
|
+ List<SaleDownChangeReply> replies = jdbcTemplate.queryForBeanList("select b2b_pc_id,sc_id,sc_code,sc_agreed,sc_replyremark from SaleDownChange where sc_agreed is not null and sc_custuu is not null and SC_SENDSTATUS = '待上传'",
|
|
|
+ SaleDownChangeReply.class);
|
|
|
+ if (!CollectionUtils.isEmpty(replies)) {
|
|
|
+ ContextHolder.setDataSize(replies.size());
|
|
|
+ post("/erp/sale/change/reply/b2b",dataWrap(replies));
|
|
|
+ //saveChangeReply(replies);
|
|
|
+ //修改状态
|
|
|
+ String idStr = CollectionUtil.getKeyString(replies);
|
|
|
+ jdbcTemplate.execute("update SaleDownChange set sc_sendstatus='已下载' where sc_id in (" + idStr + ")");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|