OSDN Git Service

Implementation the Modify Design Change Contents function.
authoruyaji <yuichiro.uyama@gmail.com>
Tue, 24 Sep 2013 00:42:06 +0000 (09:42 +0900)
committeruyaji <yuichiro.uyama@gmail.com>
Tue, 24 Sep 2013 00:42:06 +0000 (09:42 +0900)
14 files changed:
PartsList/PartsList/app/beans/DesignChangeListBean.scala
PartsList/PartsList/app/controllers/DesignChangeController.scala
PartsList/PartsList/app/controllers/PartsListController.scala
PartsList/PartsList/app/models/services/DesignChangeManager.scala
PartsList/PartsList/app/models/services/PartRelationManager.scala
PartsList/PartsList/app/views/commonDesignChangeRelationForm.scala.html [new file with mode: 0644]
PartsList/PartsList/app/views/designChangeRelationForm.scala.html
PartsList/PartsList/app/views/updateDesignChangeForm.scala.html
PartsList/PartsList/app/views/updateDesignChangeRelationForm.scala.html [new file with mode: 0644]
PartsList/PartsList/conf/messages
PartsList/PartsList/conf/messages.en
PartsList/PartsList/conf/messages.ja
PartsList/PartsList/conf/messages.ja-JP
PartsList/PartsList/conf/routes

index 75af637..808e6d9 100644 (file)
@@ -1,3 +1,3 @@
 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
index 16d4d00..e2ff4ff 100644 (file)
@@ -12,6 +12,7 @@ import org.squeryl._
 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,""))
@@ -23,6 +24,23 @@ object DesignChangeController extends Controller{
        )(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))
   }
@@ -100,4 +118,50 @@ object DesignChangeController extends Controller{
       }
     }
   }
+  
+  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
index 009b108..b99a012 100644 (file)
@@ -29,7 +29,7 @@ object PartsListController extends Controller{
     val designChangeRegistForm = Form(
         mapping(
             "partsListBeanBefore" -> mapping(
-                "parent" -> nonEmptyText,
+                "parent" -> text,
                 "child" -> text,
                 "quantity" -> longNumber
                 )(PartsListBean.apply)(PartsListBean.unapply),
@@ -118,7 +118,13 @@ object PartsListController extends Controller{
        
        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), ""))
                }
        }
index 9b71902..d19206a 100644 (file)
@@ -8,20 +8,12 @@ import scala.collection.mutable.ArrayBuffer
 
 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)
@@ -57,12 +49,12 @@ case class DesignChangeManager() {
         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) 
          }
         }
       //追加情報をバッファ        
@@ -74,7 +66,7 @@ case class DesignChangeManager() {
                    }
            }
          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
@@ -92,10 +84,51 @@ case class DesignChangeManager() {
     }
   }
 
+  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 + "%")
   }
index 78cd062..5910745 100644 (file)
@@ -4,10 +4,11 @@ import models._
 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) = {
@@ -25,7 +26,7 @@ case class PartRelationManager() {
   
   def updatePr(pr: PartRelation, data: PartsListBean) = {
     pr.quantity = data.quantity
-    PartsListDb.partRelations.update(pr)    
+    PartsListDb.partRelations.update(pr)
   }
   
   def delete(data: PartsListBean, childName: String) = {
diff --git a/PartsList/PartsList/app/views/commonDesignChangeRelationForm.scala.html b/PartsList/PartsList/app/views/commonDesignChangeRelationForm.scala.html
new file mode 100644 (file)
index 0000000..a4462f9
--- /dev/null
@@ -0,0 +1,20 @@
+@(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>
index 3bb9e30..7af335b 100644 (file)
@@ -5,25 +5,9 @@
        <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
index e7d6819..ded4835 100644 (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>
diff --git a/PartsList/PartsList/app/views/updateDesignChangeRelationForm.scala.html b/PartsList/PartsList/app/views/updateDesignChangeRelationForm.scala.html
new file mode 100644 (file)
index 0000000..fdde8b2
--- /dev/null
@@ -0,0 +1,14 @@
+@(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
index 7adce60..f6c4689 100644 (file)
@@ -31,6 +31,7 @@ list.link19=list
 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
@@ -72,6 +73,7 @@ title21=Design Change
 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
index 7adce60..f6c4689 100644 (file)
@@ -31,6 +31,7 @@ list.link19=list
 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
@@ -72,6 +73,7 @@ title21=Design Change
 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
index 5f82f50..1ec2fbc 100644 (file)
@@ -31,6 +31,7 @@ list.link19=一覧
 list.link20=設計変更登録
 list.link21=設変追加
 list.link22=設計変更一覧に戻る
+list.link23=設計変更更新に戻る
 list.data1=回答
 list.data2=回答2
 link.title1=メニューへ
@@ -72,6 +73,7 @@ title21=設計変更
 title22=設計変更更新
 title23=変更内容
 title24=変更対象ユニット
+title25=設計変更内容更新
 btn.label1=検索
 btn.label2=通知
 btn.label3=依頼
index 5f82f50..1ec2fbc 100644 (file)
@@ -31,6 +31,7 @@ list.link19=一覧
 list.link20=設計変更登録
 list.link21=設変追加
 list.link22=設計変更一覧に戻る
+list.link23=設計変更更新に戻る
 list.data1=回答
 list.data2=回答2
 link.title1=メニューへ
@@ -72,6 +73,7 @@ title21=設計変更
 title22=設計変更更新
 title23=変更内容
 title24=変更対象ユニット
+title25=設計変更内容更新
 btn.label1=検索
 btn.label2=通知
 btn.label3=依頼
index 0791d59..cf9e2ef 100644 (file)
@@ -28,6 +28,8 @@ GET            /designChangeCoverModify        controllers.DesignChangeController.designChangeC
 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)