ProduceServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. package com.iamberry.rst.service.pts;
  2. import com.iamberry.rst.core.pts.ProcessNode;
  3. import com.iamberry.rst.core.pts.Produce;
  4. import com.iamberry.rst.core.pts.ProduceProcess;
  5. import com.iamberry.rst.faces.pts.ProduceService;
  6. import com.iamberry.rst.service.pts.mapper.ProduceMapper;
  7. import com.iamberry.rst.util.ProduceNoUtil;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. /**
  14. * 生产产品管理
  15. * Created by wangxiaoming on 2017/8/28.
  16. */
  17. @Service
  18. public class ProduceServiceImpl implements ProduceService {
  19. @Autowired
  20. public ProduceMapper produceMapper;
  21. //获取生产产品列表
  22. public List<Produce> getProduceList() {
  23. Produce produce = new Produce();
  24. return produceMapper.getProduceList(produce);
  25. }
  26. @Override
  27. public List<Produce> getAllProduceListToRam() {
  28. return produceMapper.getAllProduceListToRam();
  29. }
  30. //获取生产产品列表
  31. public List<Produce> getProduceList(Produce produce) {
  32. return produceMapper.getProduceList(produce);
  33. }
  34. //获取生产产品,产品工序,工序节点
  35. public List<Produce> getAllProduceList(Integer employeeId) {
  36. return produceMapper.getAllProduceList(employeeId);
  37. }
  38. @Override
  39. public Produce getProduce(String produceNo) {
  40. return produceMapper.getProduce(produceNo);
  41. }
  42. //获取单个产品
  43. public Produce getProduce(Produce produce) {
  44. return produceMapper.getProduceByPro(produce);
  45. }
  46. @Override
  47. public ProduceProcess getProduceProcess(Integer produceId, String processNo) {
  48. ProduceProcess produceProcess = new ProduceProcess();
  49. produceProcess.setProduceId(produceId);
  50. produceProcess.setProcessNo(processNo);
  51. return produceMapper.getProduceProcess(produceProcess);
  52. }
  53. @Override
  54. public ProcessNode getprocessNode(Integer ProcessId, String nodeNo) {
  55. ProcessNode processNode = new ProcessNode();
  56. processNode.setProcessId(ProcessId);
  57. processNode.setNodeNo(nodeNo);
  58. return produceMapper.getprocessNode(processNode);
  59. }
  60. @Override
  61. public List<ProduceProcess> listProduceProcess(ProduceProcess produceProcess) {
  62. return produceMapper.selectProcessList(produceProcess);
  63. }
  64. //获取所有的节点操作
  65. public List<ProcessNode> listProcessNode(ProcessNode processNode) {
  66. return produceMapper.listProcessNode(processNode);
  67. }
  68. //添加产品
  69. @Transactional
  70. public Integer saveProduce(Produce produce) {
  71. if (0 == produce.getProduceStatus()) {
  72. produce.setProduceNo(ProduceNoUtil.NO_NUMBER);
  73. } else {
  74. produce.setProduceNo(ProduceNoUtil.getProduceNo(produceMapper));
  75. }
  76. int flag = produceMapper.saveProduce(produce);
  77. Integer produceId = produce.getProduceId(); // 获取产品主键
  78. int sort = 1; //专用排序字段
  79. for (int i = 0; i < produce.getProcess().size(); i++) {
  80. produce.getProcess().get(i).setProduceId(produceId); //产品id
  81. produce.getProcess().get(i).setProcessNo(ProduceNoUtil.getProcessNo(i)); //工序编号
  82. produce.getProcess().get(i).setProcessStatus(1); //状态
  83. if (produce.getProcess().get(i).getProcessType() == 2) { //修理工序的排序字段为99
  84. produce.getProcess().get(i).setProcessSort(99); //排序字段
  85. } else {
  86. produce.getProcess().get(i).setProcessSort(sort); //排序字段
  87. sort++;
  88. }
  89. ProduceProcess produceProcess = produce.getProcess().get(i);
  90. this.saveProduceProcess(produceProcess);
  91. Integer processId = produceProcess.getProcessId(); //获取工序主键
  92. for (int j = 0; j < produceProcess.getNodes().size(); j++) {
  93. produceProcess.getNodes().get(j).setProduceId(produceId);
  94. produceProcess.getNodes().get(j).setProcessId(processId);
  95. produceProcess.getNodes().get(j).setNodeNo(ProduceNoUtil.getNodeNo(j)); //节点编号
  96. }
  97. this.saveProcessNodeList(produceProcess.getNodes());
  98. }
  99. return flag;
  100. }
  101. //添加产品工序
  102. public Integer saveProduceProcess(ProduceProcess produceProcesses) {
  103. int flag = produceMapper.saveProduceProcess(produceProcesses);
  104. return flag;
  105. }
  106. //添加产品工序操作
  107. public Integer saveProcessNodeList(List<ProcessNode> processNodeList) {
  108. int flag = 0;
  109. if (processNodeList.size() > 0)
  110. flag = produceMapper.saveProcessNodeList(processNodeList);
  111. return flag;
  112. }
  113. /**
  114. * 修改产品
  115. *
  116. * @param produce
  117. * @return
  118. */
  119. @Transactional
  120. public Integer updateProduce(Produce produce, String delProcessIds, String delNodeIds) {
  121. if (0 == produce.getProduceStatus()) {
  122. produce.setProduceNo(ProduceNoUtil.NO_NUMBER);
  123. } else {
  124. produce.setProduceNo(ProduceNoUtil.getProduceNo(produceMapper));
  125. }
  126. //修改产品
  127. int flag = produceMapper.updateProduce(produce);
  128. //删除的工序
  129. if (delProcessIds != null && !"".equals(delProcessIds)) {
  130. String delProcessId[] = delProcessIds.split(",");
  131. this.delProcess(delProcessId);
  132. }
  133. //删除节点操作
  134. if (delNodeIds != null && !"".equals(delNodeIds)) {
  135. String delNodeId[] = delNodeIds.split(",");
  136. this.delNode(delNodeId);
  137. }
  138. Integer produceId = produce.getProduceId();
  139. int sort = 1; //专用排序字段
  140. List<ProduceProcess> updateProcessList = new ArrayList<ProduceProcess>();
  141. List<ProcessNode> updateNodeList = new ArrayList<ProcessNode>();
  142. List<ProcessNode> addNodeList = new ArrayList<ProcessNode>();
  143. for (int i = 0; i < produce.getProcess().size(); i++) {
  144. ProduceProcess produceProcess = produce.getProcess().get(i);
  145. produceProcess.setProcessNo(ProduceNoUtil.getProcessNo(i)); //工序编号
  146. if (produce.getProcess().get(i).getProcessType() == 2) { //修理工序的排序字段为99
  147. produce.getProcess().get(i).setProcessSort(99); //排序字段
  148. } else {
  149. produce.getProcess().get(i).setProcessSort(sort); //排序字段
  150. sort++;
  151. }
  152. // 新增的工序/操作的id值都为 0 ;
  153. if (0 == produceProcess.getProcessId()) { //新增的节点
  154. produce.getProcess().get(i).setProduceId(produceId); //产品id
  155. produce.getProcess().get(i).setProcessStatus(1); //状态
  156. this.saveProduceProcess(produceProcess);
  157. Integer processId = produceProcess.getProcessId(); //获取工序主键
  158. for (int j = 0; j < produceProcess.getNodes().size(); j++) {
  159. produceProcess.getNodes().get(j).setProduceId(produceId);
  160. produceProcess.getNodes().get(j).setProcessId(processId);
  161. produceProcess.getNodes().get(j).setNodeNo(ProduceNoUtil.getNodeNo(j)); //节点编号
  162. addNodeList.add(produceProcess.getNodes().get(j));
  163. }
  164. } else { //修改节点
  165. Integer processId = produceProcess.getProcessId();
  166. updateProcessList.add(produceProcess);
  167. for (int j = 0; j < produceProcess.getNodes().size(); j++) {
  168. ProcessNode processNode = produceProcess.getNodes().get(j);
  169. if (0 == processNode.getNodeId()) { //新增节点操作1
  170. processNode.setProduceId(produceId);
  171. processNode.setProcessId(processId);
  172. processNode.setNodeNo(ProduceNoUtil.getNodeNo(j));
  173. addNodeList.add(processNode);
  174. } else { //修改节点操作1
  175. processNode.setNodeNo(ProduceNoUtil.getNodeNo(j));
  176. updateNodeList.add(processNode);
  177. }
  178. }
  179. }
  180. }
  181. this.saveProcessNodeList(addNodeList); //添加节点操作
  182. this.updateProcessNodeList(updateNodeList); //修改节点操作
  183. this.updateProcessList(updateProcessList); //修改工序
  184. return flag;
  185. }
  186. /**
  187. * 删除工序
  188. *
  189. * @return
  190. */
  191. public Integer delProcess(String delProcess[]) {
  192. List<ProduceProcess> produceProcessesList = new ArrayList<ProduceProcess>();
  193. for (String processId : delProcess) {
  194. ProduceProcess produceProcess = new ProduceProcess();
  195. produceProcess.setProcessId(Integer.valueOf(processId));
  196. produceProcess.setProcessNo("#"); //删除的工序 编号为#
  197. produceProcess.setProcessStatus(0);
  198. produceProcessesList.add(produceProcess);
  199. }
  200. Integer flag = this.updateProcessList(produceProcessesList);
  201. return flag;
  202. }
  203. /**
  204. * 删除节点操作
  205. *
  206. * @param delNodeId
  207. * @return
  208. */
  209. public Integer delNode(String delNodeId[]) {
  210. Integer flag = produceMapper.delNode(delNodeId);
  211. return flag;
  212. }
  213. /**
  214. * 修改工序
  215. *
  216. * @return
  217. */
  218. public Integer updateProcessList(List<ProduceProcess> produceProcessesList) {
  219. Integer flag = 0;
  220. if (produceProcessesList.size() > 0)
  221. flag = produceMapper.updateProcessList(produceProcessesList);
  222. return flag;
  223. }
  224. /**
  225. * 修改节点操作
  226. *
  227. * @return
  228. */
  229. public Integer updateProcessNodeList(List<ProcessNode> updateNodeList) {
  230. Integer flag = 0;
  231. if (updateNodeList.size() > 0)
  232. flag = produceMapper.updateProcessNodeList(updateNodeList);
  233. return flag;
  234. }
  235. @Override
  236. public List<Produce> listSelectProduct(Produce produce) {
  237. return produceMapper.listSelectProduct(produce);
  238. }
  239. @Override
  240. public Produce getProduceByOne() {
  241. return produceMapper.getProduceByOne();
  242. }
  243. @Override
  244. public ProduceProcess getProduceProcessAndNode(Integer produceId, String processNo) {
  245. return produceMapper.getProduceProcessAndNode(produceId,processNo);
  246. }
  247. }