苏州瑞玛APS项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

397 lines
14 KiB

3 years ago
3 years ago
3 years ago
3 years ago
  1. // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
  2. package implments
  3. import (
  4. "errors"
  5. dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/me"
  6. "leit.com/LAPP_CHEERSSON_BACKEND/db"
  7. "leit.com/LAPP_CHEERSSON_BACKEND/global"
  8. "leit.com/LAPP_CHEERSSON_BACKEND/grmi"
  9. meta "leit.com/LAPP_CHEERSSON_BACKEND/meta/me"
  10. model_base "leit.com/LAPP_CHEERSSON_BACKEND/models/base"
  11. model "leit.com/LAPP_CHEERSSON_BACKEND/models/me"
  12. "leit.com/LAPP_CHEERSSON_BACKEND/utils"
  13. "strings"
  14. )
  15. /******************************************************************************
  16. *
  17. * @Description : Project的默认查询条件
  18. *
  19. * @Author : 代码生成器创建
  20. *
  21. * @Date : 2021-10-08 09:45:06
  22. *
  23. ******************************************************************************/
  24. var DefaultConditionOfProject = grmi.NewCondition(
  25. map[string]grmi.ConditionItem{
  26. meta.Project_ProjectId.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectId, grmi.Equal, true),
  27. meta.Project_Descr.UrlParameterName: grmi.NewConditionItem(meta.Project_Descr, grmi.Equal, false),
  28. meta.Project_CustomerId.UrlParameterName: grmi.NewConditionItem(meta.Project_CustomerId, grmi.Equal, false),
  29. meta.Project_SOP.UrlParameterName: grmi.NewConditionItem(meta.Project_SOP, grmi.Approximate, false),
  30. meta.Project_EOP.UrlParameterName: grmi.NewConditionItem(meta.Project_EOP, grmi.Approximate, false),
  31. meta.Project_ProjectDate1.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate1, grmi.Approximate, false),
  32. meta.Project_ProjectDate2.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate2, grmi.Approximate, false),
  33. meta.Project_ProjectDate3.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate3, grmi.Approximate, false),
  34. meta.Project_ProjectDate4.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate4, grmi.Approximate, false),
  35. meta.Project_AlertDaysBeforeEOP.UrlParameterName: grmi.NewConditionItem(meta.Project_AlertDaysBeforeEOP, grmi.Equal, false),
  36. meta.Project_CtrlPara1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlPara1, grmi.Equal, false),
  37. meta.Project_CtrlPara2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlPara2, grmi.Equal, false),
  38. meta.Project_CtrlStr1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlStr1, grmi.Equal, false),
  39. meta.Project_CtrlStr2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlStr2, grmi.Equal, false),
  40. meta.Project_CtrlTime1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlTime1, grmi.Approximate, false),
  41. meta.Project_CtrlTime2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlTime2, grmi.Approximate, false),
  42. meta.Project_LastModify.UrlParameterName: grmi.NewConditionItem(meta.Project_LastModify, grmi.Approximate, false),
  43. meta.Project_LastUser.UrlParameterName: grmi.NewConditionItem(meta.Project_LastUser, grmi.Equal, false),
  44. meta.Project_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.Project_CreateTime, grmi.Approximate, false),
  45. },
  46. nil,
  47. )
  48. /******************************************************************************
  49. *
  50. * @Description : Project的默认分页查询条件
  51. *
  52. * @Author : 代码生成器创建
  53. *
  54. * @Date : 2021-10-08 09:45:06
  55. *
  56. ******************************************************************************/
  57. var DefaultConditionOfProjectAndPaging = grmi.NewCondition(
  58. DefaultConditionOfProject.Items,
  59. grmi.NewPaging(),
  60. )
  61. /******************************************************************************
  62. *
  63. * @Struct Name : ProjectServiceImplement
  64. *-----------------------------------------------------------------------------
  65. *
  66. * @Description : Project的服务实现
  67. *
  68. * @Author : 代码生成器创建
  69. *
  70. * @Date : 2021-10-08 09:45:06
  71. *
  72. ******************************************************************************/
  73. type ProjectServiceImplement struct {
  74. }
  75. /******************************************************************************
  76. *
  77. * @Function Name : NewProjectDAOImplement
  78. *-----------------------------------------------------------------------------
  79. *
  80. * @Description : 创建一个ProjectDAOImplement实例
  81. *
  82. * @Return Value : ProjectDAOImplement实例
  83. *
  84. * @Author : 代码生成器创建
  85. *
  86. * @Date : 2021-10-08 09:45:06
  87. *
  88. ******************************************************************************/
  89. func NewProjectServiceImplement() *ProjectServiceImplement {
  90. return &ProjectServiceImplement{}
  91. }
  92. /******************************************************************************
  93. *
  94. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.InsertOne
  95. *
  96. ******************************************************************************/
  97. func (impl *ProjectServiceImplement) InsertOne(user *global.User, entity *model.Project) error {
  98. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "InsertOneProject", "插入一个Project")
  99. engine := db.Eloquent.Master()
  100. session := engine.NewSession()
  101. defer session.Close()
  102. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  103. record, err := dao.SelectOne(entity.ProjectId)
  104. if err != nil {
  105. return err
  106. }
  107. if record != nil {
  108. return grmi.NewBusinessError("已经存在相同主键的记录!")
  109. }
  110. err = dao.InsertOne(entity)
  111. if err != nil {
  112. return err
  113. }
  114. return nil
  115. }
  116. /******************************************************************************
  117. *
  118. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.DeleteOne
  119. *
  120. ******************************************************************************/
  121. func (impl *ProjectServiceImplement) DeleteOne(user *global.User, projectId string) error {
  122. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "DeleteOneProject", "删除一个Project")
  123. engine := db.Eloquent.Master()
  124. session := engine.NewSession()
  125. defer session.Close()
  126. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  127. record, err := dao.SelectOne(projectId)
  128. if err != nil {
  129. return err
  130. }
  131. if record == nil {
  132. return grmi.NewBusinessError("不存在指定记录!")
  133. }
  134. err = dao.DeleteOne(projectId)
  135. if err != nil {
  136. return err
  137. }
  138. return nil
  139. }
  140. /******************************************************************************
  141. *
  142. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.SelectOne
  143. *
  144. ******************************************************************************/
  145. func (impl *ProjectServiceImplement) SelectOne(user *global.User, projectId string) (*model.Project, error) {
  146. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectOneProject", "查询一个Project")
  147. engine := db.Eloquent.Master()
  148. session := engine.NewSession()
  149. defer session.Close()
  150. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  151. result, err := dao.SelectOne(projectId)
  152. if err != nil {
  153. return nil, err
  154. }
  155. return result, nil
  156. }
  157. /******************************************************************************
  158. *
  159. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.UpdateOne
  160. *
  161. ******************************************************************************/
  162. func (impl *ProjectServiceImplement) UpdateOne(user *global.User, entity *model.Project) error {
  163. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "UpdateOneProject", "修改一个Project")
  164. engine := db.Eloquent.Master()
  165. session := engine.NewSession()
  166. defer session.Close()
  167. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  168. record, err := dao.SelectOne(entity.ProjectId)
  169. if err != nil {
  170. return err
  171. }
  172. if record == nil {
  173. return grmi.NewBusinessError("不存在指定记录!")
  174. }
  175. err = dao.UpdateOne(entity)
  176. if err != nil {
  177. return err
  178. }
  179. return nil
  180. }
  181. /******************************************************************************
  182. *
  183. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Insert
  184. *
  185. ******************************************************************************/
  186. func (impl *ProjectServiceImplement) Insert(user *global.User, entities *[]model.Project) error {
  187. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "InsertProject", "插入多个Project")
  188. engine := db.Eloquent.Master()
  189. session := engine.NewSession()
  190. defer session.Close()
  191. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  192. for _, entity := range *entities {
  193. record, err := dao.SelectOne(entity.ProjectId)
  194. if err != nil {
  195. return err
  196. }
  197. if record != nil {
  198. return grmi.NewBusinessError("已经存在相同主键的记录!")
  199. }
  200. }
  201. err := dao.Insert(entities)
  202. if err != nil {
  203. return err
  204. }
  205. return nil
  206. }
  207. /******************************************************************************
  208. *
  209. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Delete
  210. *
  211. ******************************************************************************/
  212. func (impl *ProjectServiceImplement) Delete(user *global.User, entities *[]model.Project) error {
  213. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "DeleteProject", "删除多个Project")
  214. engine := db.Eloquent.Master()
  215. session := engine.NewSession()
  216. defer session.Close()
  217. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  218. for _, entity := range *entities {
  219. record, err := dao.SelectOne(entity.ProjectId)
  220. if err != nil {
  221. return err
  222. }
  223. if record == nil {
  224. return grmi.NewBusinessError("不存在指定记录!")
  225. }
  226. }
  227. err := dao.Delete(entities)
  228. if err != nil {
  229. return err
  230. }
  231. return nil
  232. }
  233. /******************************************************************************
  234. *
  235. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Select
  236. *
  237. ******************************************************************************/
  238. func (impl *ProjectServiceImplement) Select(user *global.User, urlParameters map[string]string) ([]model.Project, error) {
  239. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectProject", "查询Project")
  240. condition := DefaultConditionOfProjectAndPaging
  241. engine := db.Eloquent.Master()
  242. session := engine.NewSession()
  243. defer session.Close()
  244. predicates, err := condition.BuildPredicates(urlParameters)
  245. if err != nil {
  246. return nil, err
  247. }
  248. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  249. result, err := dao.Select(predicates, condition.OrderByFields)
  250. if err != nil {
  251. return nil, err
  252. }
  253. return result, nil
  254. }
  255. /******************************************************************************
  256. *
  257. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.SelectAndPaging
  258. *
  259. ******************************************************************************/
  260. func (impl *ProjectServiceImplement) SelectAndPaging(user *global.User, urlParameters map[string]string) (grmi.PagingResult, error) {
  261. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectProject", "查询Project")
  262. condition := DefaultConditionOfProjectAndPaging
  263. engine := db.Eloquent.Master()
  264. session := engine.NewSession()
  265. defer session.Close()
  266. predicates, err := condition.BuildPredicates(urlParameters)
  267. if err != nil {
  268. return grmi.EmptyPagingResult, err
  269. }
  270. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  271. condition.Fill(urlParameters)
  272. result, err := dao.SelectAndPaging(condition.Paging, predicates, condition.OrderByFields)
  273. if err != nil {
  274. return grmi.EmptyPagingResult, err
  275. }
  276. return result, nil
  277. }
  278. /******************************************************************************
  279. *
  280. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Update
  281. *
  282. ******************************************************************************/
  283. func (impl *ProjectServiceImplement) Update(user *global.User, entities *[]model.Project) error {
  284. grmi.Log(user, "/services/me/implments/Project.service.impl.go", "UpdateProject", "修改多个Project")
  285. engine := db.Eloquent.Master()
  286. session := engine.NewSession()
  287. defer session.Close()
  288. dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId)
  289. for _, entity := range *entities {
  290. record, err := dao.SelectOne(entity.ProjectId)
  291. if err != nil {
  292. return err
  293. }
  294. if record == nil {
  295. return grmi.NewBusinessError("不存在指定记录!")
  296. }
  297. }
  298. err := dao.Update(entities)
  299. if err != nil {
  300. return err
  301. }
  302. return nil
  303. }
  304. /******************************************************************************
  305. *
  306. * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/ap/CustDemandVerHeadService.ImportProject
  307. *
  308. ******************************************************************************/
  309. func (impl *ProjectServiceImplement) ImportProject(FieldKeysStr string, listData [][]interface{}) error {
  310. engine := db.Eloquent.Master()
  311. session := engine.NewSession()
  312. defer func() { //在panic前声明defer,能捕获异常
  313. if err := recover(); err != nil {
  314. session.Rollback()
  315. }
  316. }()
  317. _ = session.Begin()
  318. defer session.Close()
  319. dao := dal.NewProjectDAO(session, model_base.PlantNr, "System")
  320. FieldKeys := strings.Split(FieldKeysStr, ",")
  321. if len(listData) == 0 {
  322. return errors.New("同步数据为空!")
  323. }
  324. //第一步,先处理数据,按照客户分类
  325. for _, valData := range listData {
  326. valMap := make(map[string]interface{})
  327. for k, val := range valData {
  328. key := FieldKeys[k]
  329. valMap[key] = val
  330. }
  331. projectId := utils.ValueToString(valMap["FNumber"],"")
  332. //第二步,删除客户维护关系
  333. err := dao.DeleteWhere([]grmi.Predicate{meta.Project_ProjectId.NewPredicate(grmi.Equal, projectId)})
  334. if err != nil {
  335. return err
  336. }
  337. status := utils.ValueToString(valMap["FDocumentStatus"], "")
  338. if status != "C"{
  339. continue
  340. }
  341. //第三步,添加客户物料
  342. oneData := new(model.Project)
  343. oneData.PlantNr = model_base.PlantNr
  344. oneData.ProjectId = projectId
  345. oneData.Descr = utils.ValueToString(valMap["FName"], "")
  346. err = dao.InsertOne(oneData)
  347. if err != nil {
  348. return err
  349. }
  350. }
  351. session.Commit()
  352. return nil
  353. }