package beans
-case class DesignChangeListBean(val dcSeq: Long, val parentBefore: String, val childBefore: String, val quantityBefore: Long, val parentAfter: String, val childAfter: String, val quantityAfter: Long) {
+case class DesignChangeListBean(val dcSeq: Long, val parentBefore: String, val childBefore: String, val quantityBefore: Long, val dcSeqBefore: Long, val parentAfter: String, val childAfter: String, val quantityAfter: Long, val dcSeqAfter: Long) {
}
\ No newline at end of file
import org.squeryl.PrimitiveTypeMode._
import org.squeryl.annotations.Column
import scala.collection.mutable.ArrayBuffer
+import models.PartRelation
object DesignChangeController extends Controller{
val Home = Redirect(routes.DesignChangeController.list(0,""))
)(DesignChangeForm.apply)(DesignChangeForm.unapply)
)
+ val designChangeRelationRegistForm = Form(
+ mapping(
+ "partsListBeanBefore" -> mapping(
+ "parent" -> text,
+ "child" -> text,
+ "quantity" -> longNumber
+ )(PartsListBean.apply)(PartsListBean.unapply),
+ "partsListBeanAfter" -> mapping(
+ "parent" -> nonEmptyText,
+ "child" -> text,
+ "quantity" -> longNumber
+ )(PartsListBean.apply)(PartsListBean.unapply),
+ "dcno" -> nonEmptyText
+ )(DesignChangeRelationForm.apply)(DesignChangeRelationForm.unapply)
+ )
+
+
def create = Action { implicit request =>
Ok(views.html.createDesignChangeForm(designChangeRegistForm))
}
}
}
}
+
+ def designChangeRealtionModify(designChangeId: Long, dcDelSeq: Long, dcAddSeq: Long) = Action { implicit request =>
+ inTransaction {
+ var targetDelRelation = PartRelation(0, 0, 0, 0, 0, 0)
+ var targetAddRelation = PartRelation(0, 0, 0, 0, 0, 0)
+ var delParentNo = ""
+ var delChildNo = ""
+ var addParentNo = ""
+ var addChildNo = ""
+ val designChange = DesignChangeManager().getById(designChangeId)
+ if(dcDelSeq != 0) {
+ targetDelRelation = designChange.delPartRelation.where(pr => pr.dcSeq === dcDelSeq).head
+ delParentNo = targetDelRelation.parent.head.name
+ delChildNo = targetDelRelation.child.head.name
+ }
+ if(dcAddSeq != 0) {
+ targetAddRelation = designChange.addPartRelation.where(pr => pr.dcSeq === dcAddSeq).head
+ addParentNo = targetAddRelation.parent.head.name
+ addChildNo = targetAddRelation.child.head.name
+ }
+ val designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean(delParentNo, delChildNo), generatePartsListBean(addParentNo, addChildNo), designChange.dcNo)
+ Ok(views.html.updateDesignChangeRelationForm(designChangeRelationRegistForm.fill(designChangeRelationForm), designChangeId, addChildNo, ""))
+ }
+ }
+
+ def designChangeRelationModification(partName: String) = Action { implicit request =>
+ designChangeRelationRegistForm.bindFromRequest.fold(
+ formWithErrors => BadRequest(views.html.updateDesignChangeRelationForm(formWithErrors, 0, "", "")),
+ designChangeRelation => {
+ inTransaction {
+ DesignChangeManager().designChangeUpdate(designChangeRelation, partName)
+ Redirect(routes.DesignChangeController.designChangeCoverModify(DesignChangeManager().getByName(designChangeRelation.dcno).id, 0, ""))
+ }
+ }
+ )
+
+ }
+
+ def generatePartsListBean(parentNo:String, childNo:String):PartsListBean = {
+ if(childNo.isEmpty()) {
+ PartsListBean(parentNo, childNo, 0)
+ } else {
+ PartsListBean(parentNo, childNo, PartManager().getByName(parentNo).partRelation(PartManager().getByName(childNo).id).quantity)
+ }
+ }
+
}
\ No newline at end of file
val designChangeRegistForm = Form(
mapping(
"partsListBeanBefore" -> mapping(
- "parent" -> nonEmptyText,
+ "parent" -> text,
"child" -> text,
"quantity" -> longNumber
)(PartsListBean.apply)(PartsListBean.unapply),
def designChangeForm(parentName:String, childName:String) = Action { implicit request =>
inTransaction {
- val designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean(parentName, childName), generatePartsListBean(parentName, childName), "")
+ var designChangeRelationForm = DesignChangeRelationForm(null, null, "")
+ // 設計変更追加の場合、変更前の上位品番はセットしない。
+ if(childName.isEmpty()) {
+ designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean("", childName), generatePartsListBean(parentName, childName), "")
+ } else {
+ designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean(parentName, childName), generatePartsListBean(parentName, childName), "")
+ }
Ok(views.html.designChangeRelationForm(designChangeRegistForm.fill(designChangeRelationForm), ""))
}
}
case class DesignChangeManager() {
def designChange(data: DesignChangeRelationForm) = {
- val dc = PartsListDb.designChanges.where(dc => dc.dcNo === data.dcno).head
- val parent = PartManager().getByName(data.partsListBeanBefore.parent)
+ val dc = getByName(data.dcno)
if(!data.partsListBeanBefore.child.isEmpty()) {
- val delRelation = parent.parts.assign(PartManager().getByName(data.partsListBeanBefore.child))
- dc.delPartRelation.assign(delRelation)
- delRelation.dcSeq = dc.dcSeq
- PartsListDb.partRelations.update(delRelation)
- }
+ relationDel(data.partsListBeanBefore.parent, data.partsListBeanBefore.child, data.partsListBeanBefore.quantity, dc, dc.dcSeq)
+ }
if(!data.partsListBeanAfter.child.isEmpty()) {
- val addRelation = parent.parts.associate(PartManager().getByName(data.partsListBeanAfter.child))
- dc.addPartRelation.associate(addRelation)
- addRelation.quantity = data.partsListBeanAfter.quantity
- addRelation.dcSeq = dc.dcSeq
- PartsListDb.partRelations.update(addRelation)
+ relationAdd(data.partsListBeanAfter.parent, data.partsListBeanAfter.child, data.partsListBeanAfter.quantity, dc, dc.dcSeq)
}
dc.dcSeq += 1
PartsListDb.designChanges.update(dc)
var checkch = 0
for(addPart <- designChange.addPartRelation) {
if(delPart.dcSeq == addPart.dcSeq) {
- designChangeBuffer += DesignChangeListBean(delPart.dcSeq, delPart.parent.head.name, delPart.child.head.name, delPart.quantity, addPart.parent.head.name, addPart.child.head.name, addPart.quantity)
+ designChangeBuffer += DesignChangeListBean(delPart.dcSeq, delPart.parent.head.name, delPart.child.head.name, delPart.quantity, delPart.dcSeq, addPart.parent.head.name, addPart.child.head.name, addPart.quantity, addPart.dcSeq)
checkch = 1
}
}
if(checkch == 0) {
- designChangeBuffer += DesignChangeListBean(delPart.dcSeq, delPart.parent.head.name, delPart.child.head.name, delPart.quantity, "", "", 0)
+ designChangeBuffer += DesignChangeListBean(delPart.dcSeq, delPart.parent.head.name, delPart.child.head.name, delPart.quantity, delPart.dcSeq, "", "", 0, 0)
}
}
//追加情報をバッファ
}
}
if(checka == 0) {
- designChangeBuffer += DesignChangeListBean(addPart.dcSeq, "", "", 0, addPart.parent.head.name, addPart.child.head.name, addPart.quantity)
+ designChangeBuffer += DesignChangeListBean(addPart.dcSeq, "", "", 0, 0, addPart.parent.head.name, addPart.child.head.name, addPart.quantity, addPart.dcSeq)
}
}
return designChangeBuffer
}
}
+ def designChangeUpdate(data: DesignChangeRelationForm, partName: String) = {
+ val dc = getByName(data.dcno)
+ if(data.partsListBeanAfter.child == partName) {
+ val updateRelation = dc.addPartRelation.where(pr => pr.parentId === PartManager().getByName(data.partsListBeanAfter.parent).id and
+ pr.childId === PartManager().getByName(data.partsListBeanAfter.child).id).head
+ updateRelation.quantity = data.partsListBeanAfter.quantity
+ PartsListDb.partRelations.update(updateRelation)
+ } else {
+ val parent = PartManager().getByName(data.partsListBeanAfter.parent)
+ val child = PartManager().getByName(data.partsListBeanAfter.child)
+ val cancelChild = PartManager().getByName(partName)
+ val updateRelation = dc.addPartRelation.where(pr => pr.parentId === parent.id and
+ pr.childId === cancelChild.id).head
+ val dcSeq = updateRelation.dcSeq
+ PartsListDb.partRelations.deleteWhere(pr => pr.addDcId === dc.id and pr.dcSeq === dcSeq)
+ relationAdd(parent.name, child.name, data.partsListBeanAfter.quantity, dc, dcSeq)
+ }
+ }
+
+ def relationDel(parentNo: String, childNo: String, quantity: Long, dc: DesignChange, dcSeq: Long) = {
+ val parent = PartManager().getByName(parentNo)
+ val delRelation = parent.parts.assign(PartManager().getByName(childNo))
+ dc.delPartRelation.assign(delRelation)
+ delRelation.quantity = quantity
+ delRelation.dcSeq = dcSeq
+ PartsListDb.partRelations.update(delRelation)
+ }
+
+ def relationAdd(parentNo: String, childNo:String, quantity: Long, dc: DesignChange, dcSeq: Long) = {
+ val parent = PartManager().getByName(parentNo)
+ val addRelation = parent.parts.associate(PartManager().getByName(childNo))
+ dc.addPartRelation.associate(addRelation)
+ addRelation.quantity = quantity
+ addRelation.dcSeq = dcSeq
+ PartsListDb.partRelations.update(addRelation)
+ }
+
def getById(id: Long): DesignChange = {
PartsListDb.designChanges.where(dc => dc.id === id).head
}
+ def getByName(dcNo: String): DesignChange = {
+ PartsListDb.designChanges.where(dc => dc.dcNo === dcNo).head
+ }
+
def list(key: String): org.squeryl.Query[DesignChange] = {
PartsListDb.designChanges.where(dc => dc.dcNo like key + "%")
}
import org.squeryl._
import org.squeryl.PrimitiveTypeMode._
case class PartRelationManager() {
- def insert(data:PartsListBean) = {
+ def insert(data:PartsListBean):PartRelation = {
val pr = PartManager().getByName(data.parent).parts.associate(PartManager().getByName(data.child))
// insertの後、attributeの更新
updatePr(pr, data)
+ return pr
}
def update(data:PartsListBean, childName:String) = {
def updatePr(pr: PartRelation, data: PartsListBean) = {
pr.quantity = data.quantity
- PartsListDb.partRelations.update(pr)
+ PartsListDb.partRelations.update(pr)
}
def delete(data: PartsListBean, childName: String) = {
--- /dev/null
+@(designChangeRelationForm: Form[forms.DesignChangeRelationForm])(implicit lang: Lang)
+@import helper._
+ @inputText(designChangeRelationForm("dcno"), '_label -> Messages("list.header10"))
+ <hr />
+ @Messages("form.header10")
+ <fieldSet>
+ @inputText(designChangeRelationForm("partsListBeanBefore.parent"), '_label -> Messages("list.header1"), 'readonly -> "readonly")
+ @inputText(designChangeRelationForm("partsListBeanBefore.child"), '_label -> Messages("list.header2"), 'readonly -> "readonly")
+ @inputText(designChangeRelationForm("partsListBeanBefore.quantity"), '_label -> Messages("list.header3"), 'readonly -> "readonly")
+ </fieldSet>
+ <hr />
+ @Messages("form.header11")
+ <fieldSet>
+ @inputText(designChangeRelationForm("partsListBeanAfter.parent"), '_label -> Messages("list.header1"), 'readonly -> "readonly")
+ @inputText(designChangeRelationForm("partsListBeanAfter.child"), '_label -> Messages("list.header2"))
+ @inputText(designChangeRelationForm("partsListBeanAfter.quantity"), '_label -> Messages("list.header3"))
+ </fieldSet>
+ <div class="action">
+ <input type="submit" class="btn primary" value=@Messages("btn.label4") >
+ </div>
<h1>@Messages("title21")</h1>
@error
@form(routes.PartsListController.designChange()) {
- @inputText(designChangeRelationForm("dcno"), '_label -> Messages("list.header10"))
- <hr />
- @Messages("form.header10")
- <fieldSet>
- @inputText(designChangeRelationForm("partsListBeanBefore.parent"), '_label -> Messages("list.header1"), 'readonly -> "readonly")
- @inputText(designChangeRelationForm("partsListBeanBefore.child"), '_label -> Messages("list.header2"), 'readonly -> "readonly")
- @inputText(designChangeRelationForm("partsListBeanBefore.quantity"), '_label -> Messages("list.header3"), 'readonly -> "readonly")
- </fieldSet>
- <hr />
- @Messages("form.header11")
- <fieldSet>
- @inputText(designChangeRelationForm("partsListBeanAfter.parent"), '_label -> Messages("list.header1"), 'readonly -> "readonly")
- @inputText(designChangeRelationForm("partsListBeanAfter.child"), '_label -> Messages("list.header2"))
- @inputText(designChangeRelationForm("partsListBeanAfter.quantity"), '_label -> Messages("list.header3"))
- </fieldSet>
- <div class="action">
- <input type="submit" class="btn primary" value=@Messages("btn.label4") >
- </div>
- <br />
- <a href="/single_partslist?page=0&key=">@Messages("list.link2")</a>
- }
+ @commonDesignChangeRelationForm(designChangeRelationForm)
+ }
+ <br />
+ <a href="/single_partslist?page=0&key=">@Messages("list.link2")</a>
+
}
\ No newline at end of file
<td>@delRelation.parentBefore</td>
<td><a href="/designChangeCoverModify?designChangeId=@id&dcSeq=@delRelation.dcSeq&message=">@delRelation.childBefore</a></td>
<td>@if(delRelation.quantityBefore != 0) {
- @delRelation.quantityBefore
+ <a href="/designChangeModify?designChangeId=@id&dcDelSeq=@delRelation.dcSeqBefore&dcAddSeq=@delRelation.dcSeqAfter&message=">@delRelation.quantityBefore</a>
+
}
</td>
<td>@delRelation.parentAfter</td>
<td>@delRelation.childAfter</td>
<td>@if(delRelation.quantityAfter != 0) {
- @delRelation.quantityAfter
+ <a href="/designChangeModify?designChangeId=@id&dcDelSeq=@delRelation.dcSeqBefore&dcAddSeq=@delRelation.dcSeqAfter&message=">@delRelation.quantityAfter</a>
}
</td>
</tr>
--- /dev/null
+@(designChangeRelationForm: Form[forms.DesignChangeRelationForm], designChangeId: Long, partName:String, error:String)(implicit lang: Lang)
+@import helper._
+@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.f) }
+@main("Design Change by Play 2.1") {
+ <h1>@Messages("title25")</h1>
+ @error
+ @form(routes.DesignChangeController.designChangeRelationModification(partName)) {
+ @commonDesignChangeRelationForm(designChangeRelationForm)
+ }
+
+ <br />
+ <a href="/designChangeCoverModify?designChangeId=@designChangeId&dcSeq=0&message=">@Messages("list.link23")</a>
+
+}
\ No newline at end of file
list.link20=create Design Change
list.link21=Design Change Add
list.link22=return Design Change list
+list.link23=return Design Change Update
list.data1=reply
list.data2=reply2
link.title1=menu
title22=Modify Design Change
title23=Design Change Contents
title24=Target Unit
+title25=Modify Design Change Contents
btn.label1=search
btn.label2=Notification
btn.label3=Request
list.link20=create Design Change
list.link21=Design Change Add
list.link22=return Design Change list
+list.link23=return Design Change Update
list.data1=reply
list.data2=reply2
link.title1=menu
title22=Modify Design Change
title23=Design Change Contents
title24=Target Unit
+title25=Modify Design Change Contents
btn.label1=search
btn.label2=Notification
btn.label3=Request
list.link20=設計変更登録
list.link21=設変追加
list.link22=設計変更一覧に戻る
+list.link23=設計変更更新に戻る
list.data1=回答
list.data2=回答2
link.title1=メニューへ
title22=設計変更更新
title23=変更内容
title24=変更対象ユニット
+title25=設計変更内容更新
btn.label1=検索
btn.label2=通知
btn.label3=依頼
list.link20=設計変更登録
list.link21=設変追加
list.link22=設計変更一覧に戻る
+list.link23=設計変更更新に戻る
list.data1=回答
list.data2=回答2
link.title1=メニューへ
title22=設計変更更新
title23=変更内容
title24=変更対象ユニット
+title25=設計変更内容更新
btn.label1=検索
btn.label2=通知
btn.label3=依頼
POST /designChangeCoverModification controllers.DesignChangeController.designChangeCoverModification(id: Long)
POST /designChangeCancel controllers.DesignChangeController.designChangeCancel(id:Long)
GET /designChangeAppend controllers.DesignChangeController.designChangeAppend(designChangeId:Long, dcSeq:Long, parentName:String)
+GET /designChangeModify controllers.DesignChangeController.designChangeRealtionModify(designChangeId: Long, dcDelSeq: Long, dcAddSeq: Long)
+POST /designChangeModification controllers.DesignChangeController.designChangeRelationModification(partName: String)
GET /projectCreate controllers.ProjectController.createProject
POST /projectSave controllers.ProjectController.projectRegistration()
GET /projectModify controllers.ProjectController.updateProject(id:Long)