package book.stock; import foundation.action.ActionContext; import foundation.action.ActionProvider; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.util.Util; public class WriterBack extends ActionProvider { private NamedSQL namedSQL = null; private DataObject dataObject = null; private Filter filter = null; private EntitySet entitySet = null; private Entity entity = null; @Override public void exec(ActionContext context, String method) throws Exception { if ("refreshOrderReceived".equals(method)) { refreshOrderReceived(); } else if ("checkExcessDelivery".equalsIgnoreCase(method)) { checkExcessDelivery(); } else if ("checkOrderDirectDelivery".equalsIgnoreCase(method)) { checkOrderDirectDelivery(); } } private void checkOrderDirectDelivery() { String deliver_id = dataReader.getString("id"); if (Util.isEmpty(deliver_id)) { return; } try { dataObject = DataObject.getInstance("so_delivery"); filter = new Filter(); filter.add("id", deliver_id); filter.add("ifnull(so_delivery.customer_id, '')", ""); entity = dataObject.getTableEntity(filter); if (entity != null && !entity.isEmpty()) { refreshOrderReceived(); entity.set("state_code", "Received"); entity.set("state_name", "已收货"); dataObject.updateEntity(entity); terminateTask(context); return; } } catch(Exception e) { e.printStackTrace(); } } private void checkExcessDelivery() { String deliver_id = dataReader.getString("id"); if (Util.isEmpty(deliver_id)) { return; } try { namedSQL = NamedSQL.getInstance("checkExcessDelivery"); namedSQL.setParam("id", deliver_id); entitySet = SQLRunner.getEntitySet(namedSQL); if (entitySet != null && !entitySet.isEmpty()) { dataWriter.reportOneError("订单收货", "超量发货,不能收货,请联系商务"); terminateTask(context); return; } } catch(Exception e) { e.printStackTrace(); } } public void refreshOrderReceived() { String deliver_id = dataReader.getString("id"); if (Util.isEmpty(deliver_id)) { return; } try { namedSQL = NamedSQL.getInstance("getDeliveryById"); namedSQL.setParam("id", deliver_id); entity = SQLRunner.getEntity(namedSQL); if ("Received".equalsIgnoreCase(entity.getString("state_code"))) { dataWriter.reportOneError("订单收货", "发货单已收货,请检查单据状态"); terminateTask(context); return; } //SQLRunner.beginTrans(); //根据收货单更新订单明细数量 namedSQL = NamedSQL.getInstance("refreshOrderDetailQtyReceived"); namedSQL.setParam("id", deliver_id); SQLRunner.execSQL(namedSQL); //根据收货单更新订单主体数量 namedSQL = NamedSQL.getInstance("refreshOrderQtyReceived"); namedSQL.setParam("id", deliver_id); SQLRunner.execSQL(namedSQL); //根据收货单更新订单状态 namedSQL = NamedSQL.getInstance("refreshOrderReceivedState"); namedSQL.setParam("id", deliver_id); SQLRunner.execSQL(namedSQL); //SQLRunner.commit(); } catch(Exception e) { e.printStackTrace(); // try { // SQLRunner.rollback(); // } catch (Exception e1) { // e1.printStackTrace(); // } } } @Override protected void publishMethod() { // TODO Auto-generated method stub } }