north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -6,6 +6,7 @@ import request from "@/utils/request" import deepClone from "@/utils/deepClone" import useUserInfoStore from '@/stores/userInfo' let dialogTableVisible = ref(false) const userStore = useUserInfoStore() const router = useRouter() const xGrid = ref() @@ -160,6 +161,10 @@ const $grid = xGrid.value if ($grid) { switch (code) { case 'remarks': { dialogTableVisible.value=true break } case 'Craft': { await router.push({path: '/main/order/updateOrderCraft', query: {orderID: 12123}}) break @@ -276,7 +281,7 @@ if(res.code==200){ ElMessage.success('保存成功') }else { ElMessage.warning(res.msg) ElMessage.error(res.msg) } }) } @@ -334,8 +339,8 @@ item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2)) item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2)) }) //赋值表头数据 titleUploadData.value.money=countMoney(jsonData).toString() xGrid.value.loadData(jsonData) } fileReader.readAsBinaryString(files[0]) @@ -510,6 +515,13 @@ </vxe-grid> </div> <el-dialog v-model="dialogTableVisible" title="加工要求" style="width: 60%;height:75% "> <el-input v-model="titleUploadData.processingNote" type="textarea" :autosize="{ minRows: 2, maxRows: 20 }" /> </el-dialog> </div> </template> north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue
@@ -55,7 +55,7 @@ {title: '审核', width: 40, slots: { default: 'state' }}, {title: '出库', width: 40, slots: { default: 'state' }}, {field: '1',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, {field: '1',width:120, title: '发货单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, {field: '2',width:120, title: '客户编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, {field: '3',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, {field: '4',width:120, title: '总数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, @@ -84,7 +84,7 @@ data: [ { '0': '1', '1': 'NG23110102', '1': 'JG23110102', '2': '11', '3': '中建', '4': '534', @@ -101,7 +101,7 @@ }, { '0': '1', '1': 'NG23110101', '1': 'JG23110101', '2': '11', '3': '中建', '4': '534', north-glass-erp/src/main/java/com/example/erp/common/Constants.java
@@ -9,4 +9,5 @@ String Code_400="400";// String Code_200="200";//成功 String Code_600="600";//其他问题 String Code_msg = "服务器发生异常,保存失败"; } north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -2,8 +2,10 @@ import cn.hutool.json.JSON; import com.alibaba.fastjson.JSONObject; import com.example.erp.common.Constants; import com.example.erp.common.Result; import com.example.erp.entity.sd.Order; import com.example.erp.exception.ServiceException; import com.example.erp.service.sd.OrderService; import org.apache.tomcat.Jar; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +23,11 @@ private OrderService orderService; @PostMapping("/saveOrder") public Result saveOrder(@RequestBody Map<String, Object> orderMap) { return Result.seccess(orderService.saveOrder(orderMap)); public Result saveOrder(@RequestBody Map<String, Object> orderMap) throws Exception { if(orderService.saveOrder(orderMap)) { return Result.seccess(true); }else{ throw new ServiceException(Constants.Code_500,Constants.Code_msg); } } } north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -39,6 +39,7 @@ private String otherRemarks; private Double area; private Long quantity; private String perimeter; private String verifierId; private String verifier; private String creatorId; north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.example.erp.entity.mm.FinishedGoodsInventory; import lombok.Data; import java.time.LocalDate; @@ -9,7 +10,6 @@ @Data public class OrderDetail { @TableId(type = IdType.AUTO) private Long id; private String orderId; private Integer orderNumber; @@ -41,6 +41,7 @@ private Order order; private Delivery delivery; private DeliveryDetail deliveryDetail; private FinishedGoodsInventory finishedGoodsInventory; //private Product product; } north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderProcessDetail.java
@@ -9,11 +9,14 @@ @TableId(type = IdType.AUTO) private Long id; private String orderId; private String orderNumber; private Integer technologyNumber; private String process; private Integer reportingworkNum; private Integer brokenNum; private Order order; private OrderDetail orderDetail; private Product product; // private Order order; // private OrderDetail orderDetail; // private Product product; } north-glass-erp/src/main/java/com/example/erp/entity/sd/ProductDetail.java
@@ -12,12 +12,14 @@ public class ProductDetail { @TableId(type = IdType.AUTO) private Long id; private String productName; private String prodId; private String sortNum; private String glassSort; private String detailType; private String detail; private Integer glassGroup; private String process; private String separation; private LocalDate createTime; private Product product; } north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysError.java
New file @@ -0,0 +1,14 @@ package com.example.erp.entity.userInfo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; @Data public class SysError { @TableId(type = IdType.AUTO) private String id; private String func; private String error; private String createTime; } north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderGlassDetailMapper.java
New file @@ -0,0 +1,15 @@ package com.example.erp.mapper.sd; import com.example.erp.entity.sd.OrderGlassDetail; import com.example.erp.entity.sd.OrderProcessDetail; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface OrderGlassDetailMapper { boolean insertOrderGlassDetail(@Param("orderId") String orderId); List<OrderGlassDetail> selectOrderGlassDetail(@Param("orderId") String orderId); } north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -3,8 +3,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.erp.entity.sd.Order; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface OrderMapper extends BaseMapper<Order> { Integer selectMaxOrderId(); boolean updateOrderParameter(@Param("orderId") String orderId); } north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderProcessDetailMapper.java
New file @@ -0,0 +1,13 @@ package com.example.erp.mapper.sd; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.erp.entity.sd.OrderProcessDetail; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface OrderProcessDetailMapper extends BaseMapper<OrderProcessDetail> { boolean insertOrderProcessDetail(@Param("processDetailList") List<OrderProcessDetail> processDetailList); } north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductDetailMapper.java
New file @@ -0,0 +1,12 @@ package com.example.erp.mapper.sd; import com.example.erp.entity.sd.ProductDetail; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface ProductDetailMapper { List<ProductDetail> getGlassDetailList(); } north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysErrorMapper.java
New file @@ -0,0 +1,11 @@ package com.example.erp.mapper.userInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.erp.entity.userInfo.SysError; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface SysErrorMapper extends BaseMapper<SysError> { Boolean saveError(@Param("sysError")SysError sysError); } north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -3,50 +3,72 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.example.erp.common.Constants; import com.example.erp.entity.sd.Order; import com.example.erp.entity.sd.OrderDetail; import com.example.erp.mapper.sd.OrderDetailMapper; import com.example.erp.mapper.sd.OrderMapper; import com.example.erp.entity.sd.OrderGlassDetail; import com.example.erp.entity.sd.OrderProcessDetail; import com.example.erp.entity.userInfo.SysError; import com.example.erp.exception.ServiceException; import com.example.erp.mapper.sd.*; import com.example.erp.service.userInfo.SysErrorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.*; @Service @DS("sd") @Transactional @Transactional(rollbackFor = Exception.class) public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private OrderDetailMapper orderDetailMapper; private final OrderMapper orderMapper; private final OrderDetailMapper orderDetailMapper; private final OrderGlassDetailMapper orderGlassDetailMapper; private final SysErrorService sysErrorService; public boolean saveOrder(Map<String,Object> orderMap) { private final OrderProcessDetailMapper orderProcessDetailMapper; public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService) { this.orderMapper = orderMapper; this.orderDetailMapper = orderDetailMapper; this.orderGlassDetailMapper = orderGlassDetailMapper; this.orderProcessDetailMapper = orderProcessDetailMapper; this.sysErrorService = sysErrorService; } public boolean saveOrder(Map<String,Object> orderMap) throws Exception { JSONObject orderJson = new JSONObject(orderMap); Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class); List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class); boolean saveState = true; //设置回滚点 Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); //判断传入id参数是否为空,未传入id为空插入订单表,传入更新表 // System.out.println(order); try{ if(order.getOrderId() == null || order.getOrderId().isEmpty()){ insertOrder(order,OrderDetails); }else { saveState = updateOrder(order,OrderDetails); } }catch (Exception e){ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); //将异常传入数据库 SysError sysError = new SysError(); sysError.setError(e.toString()); sysError.setFunc("saveOrder"); sysErrorService.insert(sysError); saveState = false; return true; //throw new Exception(); } System.out.println(saveState); return saveState; } //生成订单数据 public void insertOrder(Order order,List<OrderDetail> OrderDetails) { Integer maxOrderId = orderMapper.selectMaxOrderId(); //查询订单id,并且自增 @@ -63,11 +85,31 @@ for (int i = 0; i < OrderDetails.size(); i++) { OrderDetails.get(i).setOrderNumber(i+1); OrderDetails.get(i).setOrderId(orderId); OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2); OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2/1000); OrderDetails.get(i).setWeight(1.0); } //往明细表插数据 orderDetailMapper.insertBatch(OrderDetails); //修改订单主表面积与周长以及重量 orderMapper.updateOrderParameter(orderId); //往小片表传入产品数据 orderGlassDetailMapper.insertOrderGlassDetail(orderId); //查询订单小片表获取工艺传入小片工艺表 List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId); List<OrderProcessDetail> orderProcessDetailList = new ArrayList<>(); for (OrderGlassDetail orderGlassDetail : orderGlassDetails) { String[] processList = orderGlassDetail.getProcess().split("->"); for (String process : processList) { OrderProcessDetail orderProcessDetail = new OrderProcessDetail(); orderProcessDetail.setOrderId(orderGlassDetail.getOrderId()); orderProcessDetail.setOrderNumber(orderGlassDetail.getOrderNumber()); orderProcessDetail.setTechnologyNumber(orderGlassDetail.getTechnologyNumber()); orderProcessDetail.setProcess(process); orderProcessDetailList.add(orderProcessDetail); } } //赋值订单工艺表 orderProcessDetailMapper.insertOrderProcessDetail(orderProcessDetailList); } public boolean updateOrder(Order order,List<OrderDetail> OrderDetails) { north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysErrorService.java
New file @@ -0,0 +1,22 @@ package com.example.erp.service.userInfo; import com.baomidou.dynamic.datasource.annotation.DS; import com.example.erp.entity.userInfo.SysError; import com.example.erp.mapper.userInfo.SysErrorMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @DS("user_info") public class SysErrorService { private final SysErrorMapper sysErrorMapper; public SysErrorService(SysErrorMapper sysErrorMapper) { this.sysErrorMapper = sysErrorMapper; } public void insert(SysError sysError) { sysErrorMapper.saveError(sysError); } } north-glass-erp/src/main/resources/mapper/sd/OrderGlassDetailMapper.xml
New file @@ -0,0 +1,41 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.erp.mapper.sd.OrderGlassDetailMapper"> <insert id="insertOrderGlassDetail" parameterType="java.lang.String"> insert into order_glass_detail ( order_id, order_number, technology_number, glass_address, glass_child, child_width, child_height, process, `group`) select od.order_id, od.order_number, pd.glass_sort, if(pd.glass_sort=1,'(外)',if(pd2.glass_sort=pd.glass_sort,'(内)','')), pd.detail, od.width, od.height, pd.process, pd.glass_group from sd.product_detail as pd left join order_detail as od on od.product_id = pd.prod_id and pd.detail_type='glass' LEFT JOIN (SELECT max(id) as id ,max(glass_sort) as glass_sort from product_detail GROUP BY prod_id)as pd2 on pd2.id=pd.id where od.order_id = #{orderId} ORDER BY od.order_number </insert> <select id="selectOrderGlassDetail"> select * from order_glass_detail where order_id = #{orderId} </select> </mapper> north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -9,7 +9,23 @@ from `order` as a where a.create_time = curdate() date(a.create_time) = curdate() </select> <update id="updateOrderParameter"> update `order` o left join (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area) as c from sd.order_detail as a group by a.order_id) od on o.order_id = od.order_id set o.quantity = od.b, o.area = od.c, o.perimeter= od.aa where o.order_id = #{orderId} </update> </mapper> north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetail.xml
New file @@ -0,0 +1,28 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.erp.mapper.sd.OrderProcessDetailMapper"> <insert id="insertOrderProcessDetail" > insert into order_process_detail( order_id, order_number, technology_number, process ) values <foreach collection ="processDetailList" item="processDetail" separator =","> ( #{processDetail.orderId}, #{processDetail.orderNumber}, #{processDetail.technologyNumber}, #{processDetail.process} ) </foreach> </insert> </mapper> north-glass-erp/src/main/resources/mapper/sd/ProductDetail.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.erp.mapper.sd.ProductDetailMapper"> <select id="getGlassDetailList"> select * from product_detail where prod_id = #{productId} and detail_type = 'glass' </select> </mapper> north-glass-erp/src/main/resources/mapper/userInfo/SysError.xml
New file @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.erp.mapper.userInfo.SysErrorMapper"> <insert id="saveError"> insert into erp_user_info.sys_error( func, error) values (#{sysError.func}, #{sysError.error}) </insert> </mapper> north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -9,7 +9,23 @@ from `order` as a where a.create_time = curdate() date(a.create_time) = curdate() </select> <update id="updateOrderParameter"> update `order` o left join (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area) as c from sd.order_detail as a group by a.order_id) od on o.order_id = od.order_id set o.quantity = od.b, o.area = od.c, o.perimeter= od.aa where o.order_id = #{orderId} </update> </mapper>