こんにちは。ソフトウェア開発をしていると領収証や請求書などの帳票を作成する機会があると思います。 最近、初めて帳票を改修する機会がありました。実装を見れば、ある程度何となくでも行けそうな箇所もありましたが、今回主に以下3点について改修したく、その際に知ったことを中心に改修箇所のポイントとして記事にすることにしました。 ① 帳票に新たな項目と値を表示させたい ② 画像の変更をしたい ③ 明細部分の表示の実装を変更したい ※本記事は、帳票作成したことはないが、 既存プロジェクトに帳票がすでに作成されており、その改修作業をする人向けに記載をしております。そのため、実際のソースコードを追えば、 ある程度はできるであろうということを前提としております。
今回は、帳票出力する際に使用されるツールとjrxmlファイルのソースコードの書き方をいくつかポイントを絞ってご紹介しました。Jaspersoft studio は、帳票作成にはかかせないツールであり、柔軟な帳票を作成することができます。また、jrxmlファイル内で、コードがどう記載されているかを知るということが重要です。コードがわかるようになると、ある程度のことは Jaspersoft studio を使用せずとも、改修できるようになると思います。 ぜひみなさんもいろいろな帳票を作成してみてください。
select concat('ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;') as 'sql' from information_schema.tables where table_schema like '%cscart%' and engine = 'MyISAM';
FROM tensorflow/tensorflow:latest-py3
RUN apt-get update && apt-get -y upgrade
RUN pip install pandas --upgrade
RUN pip install matplotlib --upgrade
RUN pip install keras --upgrade
RUN pip install tensorflow --upgrade
RUN pip install sklearn --upgrade
RUN mkdir /temp
上記のDockderfileをbuildします
docker build -t tensor_flow_ubuntu .
予測するためのソースコードは下記です。使用できるモデルはいくつかあるのですが、今回はlong short time memory(lstm)というモデルで予測を行いました。lstmは、時系列データで学習できるようにするネットワークで、今回の予測に適しているので採用しました。
package jp.sbworks.standard.web.dao;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import org.sql2o.Connection;
import org.sql2o.Query;
import org.sql2o.Sql2o;
import jp.sbworks.standard.web.db.single.pojo.SSample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class SampleDao {
@Autowired
// データベースアクセス用のライブラリ
private Sql2o sql2o;
// リスト情報を取得する
public List<SSample> getMemberList(HashMap<String, String> search) throws SQLException, IOException {
// Jdbcに接続する
Connection con = sql2o.open();
con.getJdbcConnection().setAutoCommit(false);
// クエリの作成
Query query = con.createQuery("select ID as id, NAME as name, DEPARTMENT as department, DAY_OF_JOINING as dayOfJoining from SAMPLE limit :limit offset :offset;");
int limit = Integer.valueOf(search.get("limit"));
int page = Integer.valueOf(search.get("page")) - 1;
// 何件情報を取得するかの指定。
query = query.addParameter("limit", limit);
// 何件目からの情報を取得するかの指定(※コントローラからパラメータを使って現在のページ数が分かる。それによって何件目からの情報を取得すればいいのかが分かる。)
query = query.addParameter("offset", limit * page);
return query.executeAndFetch(SSample.class);
}
// リスト情報件数を取得する
public int getMemberListCount() throws SQLException, IOException {
Connection con = sql2o.open();
con.getJdbcConnection().setAutoCommit(false);
Query query = con.createQuery("select count(1) from SAMPLE");
return query.executeAndFetchFirst(Integer.class);
}
}
1-3 DB
package jp.sbworks.standard.web.db.single.pojo;
import java.io.Serializable;
import java.time.LocalDate;
public class SSample implements Serializable {
// ID
public Integer id;
// 名前
public String name;
// 部署
public Integer department;
// 入社日
public LocalDate dayOfJoining;
// 登録者
public String regName;
}
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
Name Command State Ports
---------------------------------------------------------------------------------------------------
hogehoge_app_1 sh -c java -Dserver.port=8 ... Up 0.0.0.0:8090->8180/tcp
hogehoge_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3314->3306/tcp, 33060/tcp